Method: Sequel::Plugins::Composition::ClassMethods#define_composition_accessor

Defined in:
lib/sequel/plugins/composition.rb

#define_composition_accessor(name, opts = {}) ⇒ Object

Define getter and setter methods for the composition object.



101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/sequel/plugins/composition.rb', line 101

def define_composition_accessor(name, opts={})
  include(@composition_module ||= Module.new) unless composition_module
  composer = opts[:composer]
  composition_module.class_eval do
    define_method(name) do 
      compositions.include?(name) ? compositions[name] : (compositions[name] = instance_eval(&composer))
    end
    define_method("#{name}=") do |v|
      modified!
      compositions[name] = v
    end
  end
end