Skip to content

Instantly share code, notes, and snippets.

@fairchild
Created March 13, 2009 08:11
Show Gist options
  • Select an option

  • Save fairchild/78482 to your computer and use it in GitHub Desktop.

Select an option

Save fairchild/78482 to your computer and use it in GitHub Desktop.
try it using instance variables
def define_defaults(ops={})
ops.each do |k, v|
next if k.to_s == 'options'
class_defaults[k.to_sym] = v
instance_variable_set "@#{k}", v
methods_to_define = {
:class_getter => "class << self; def #{k}; class_defaults[:#{k}]; end; end",
# :instance_get_and_set => "def #{k}(i=nil); i ? @__#{k} = i : __options[:#{k}]; end",
:attr_accessor => "attr_accessor :#{k}",
:instance_get_and_set => "def #{k}(i=nil); i ? @#{k} = i : @#{k}; end",
:instance_set_with_eql => "def #{k}=(v); @#{k} = v;end"
}.each {|method, definition| module_eval definition}
puts " #{self} @minimum_instances= #{@minimum_instances}" if k.to_s =~ /minimum_run/
end
end
resulted in
PoolParty::Base @minimum_instances= 1
PoolParty::Base @minimum_instances= 1
PoolParty::Cloud::Cloud @minimum_instances= 2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment