Skip to content

Instantly share code, notes, and snippets.

@jwenerd
Created February 23, 2015 15:53
Show Gist options
  • Save jwenerd/5c1561dcdb609476892c to your computer and use it in GitHub Desktop.
Save jwenerd/5c1561dcdb609476892c to your computer and use it in GitHub Desktop.
testing out instance define methods for models
class Foo
def self.set_foo
@foo = 1
end
def self.print_foo
puts "class isntance foo = #{@foo}"
end
def self.increment_foo
@foo = @foo + 1
end
def self.get_foo
@foo
end
def self.multiply_instance multiplier
class_eval do
define_method(:multiply_foo) do
@multiplier ||= multiplier
puts "multiplying foo by #{@multiplier}"
puts "(arg was #{multiplier})"
puts self.get_foo
puts @multiplier
@foo = self.get_foo * @multiplier
end
end
self
end
def initialize
self.get_foo
puts "initialized Foo"
end
def print_foo
puts "instance foo = #{@foo}"
end
def get_foo
if !@foo #@foo doesnt exist in class instance
@foo = Foo.get_foo
end
@foo
end
def get_class_foo
puts self.class.get_foo
end
end
Foo.set_foo
Foo.print_foo
foo = Foo.multiply_instance(3).new
foo.print_foo
foo.multiply_foo
foo.print_foo
foo.multiply_foo
foo.multiply_foo
foo.multiply_foo
foo.multiply_foo
foo.multiply_foo
foo.print_foo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment