Skip to content

Instantly share code, notes, and snippets.

View saturnflyer's full-sized avatar
😀

Jim Gay saturnflyer

😀
View GitHub Profile

Keybase proof

I hereby claim:

  • I am saturnflyer on github.
  • I am saturnflyer (https://keybase.io/saturnflyer) on keybase.
  • I have a public key ASDwc6NFkREQr6HNVxVL2w4gI0IykEnAZvZiIDU1yGL3ywo

To claim this, I am signing this object:

@saturnflyer
saturnflyer / the_world_of_foos.rb
Last active July 16, 2019 16:49 — forked from zdennis/the_world_of_foos.rb
Given the below hierarchy how many ways can you think of to wrap the `Parent#foo` implementation so that `Grandchild1` and `Grandchild2` can have their own unique logic that executes after all of the mixin `foo`(s) but before the `Parent#foo` executes?
module N
def foo
puts "N: foo"
super
end
end
module O
def foo
puts "O: foo"
@saturnflyer
saturnflyer / dynamic_initialize.rb
Created July 10, 2013 14:11
Dynamically defining the initialize method and setting the arity.
class Something
def self.init(*init_args)
# this works but...
define_method(:initialize){|*args|
# arity is -1
}
class_eval %Q<
def initialize(#{*init_args})
@saturnflyer
saturnflyer / json-generator.rb
Last active May 24, 2017 20:49
Using casting to apply different behaviors to an object for generating JSON
require 'json'
require 'casting'
module Names
def names
"names here"
end
end
module Secrets
@saturnflyer
saturnflyer / prepended.rb
Last active May 11, 2017 12:54 — forked from cmar/prepended.rb
example of prepended class methods
class Foo
def self.say
p "hello from Foo"
end
end
module Bar
def say
super
p "hello from Bar"
module Foo1
def self.bar
"Yolo"
end
end
"Foo1.bar => #{Foo1.bar}" # => "Foo1.bar => Yolo"
module Foo2
def bar # !> previous definition of bar was here
"Yolo"
@saturnflyer
saturnflyer / namespace.rb
Last active January 13, 2016 21:58
ability to create classes and modules in a namespace
module Namespace
class Manager
def initialize(namespace)
@managed = namespace
end
def create_module(name, &block)
mod = Module.new(&block)
@managed.const_set(name, mod)
mod
@saturnflyer
saturnflyer / exception.rb
Created November 26, 2013 18:37
Exception cause patch for access like a null object
class Exception
def cause_message
cause && cause.message
end
def cause_backtrace
cause && cause.backtrace
end
end
Introduction .....................................................................................................6
What This Is ..................................................................................................................8
What This Is Not ...........................................................................................................8
Lost In Translation...........................................................................................9
Our First Bugs..............................................................................................................10
Object Orientation ........................................................................................12
Where We Are..............................................................................................................12
Where We’ve Been .......................................................................................................20
Where We’re Going ....................
require 'delegate'
# Public: This class initializes a presenter object.
# The presenter wraps a given object and a view object and will forward
# method calls to each. By default, any unknown method will be passed
# to the first object.
# Any methods that need to be sent to the view, may be done explicitly.
#
# Examples:
#
# # Inside a controller you create a helper method to access this object