Sha256: cd05fd45ed82f9854c8302f94f2d86ea484335a7e5d3922d948c6b6baba02f4a
Contents?: true
Size: 944 Bytes
Versions: 93
Compression:
Stored size: 944 Bytes
Contents
module FactoryGirl class EvaluatorClassDefiner def initialize(attributes, callbacks, parent_class) @parent_class = parent_class @callbacks = callbacks @attributes = attributes attributes.each do |attribute| define_attribute(attribute.name, attribute.to_proc) end end def evaluator_class @evaluator_class ||= Class.new(@parent_class).tap do |klass| klass.callbacks ||= [] klass.callbacks += @callbacks klass.attribute_lists ||= [] klass.attribute_lists += [@attributes] end end private def define_attribute(attribute_name, attribute_proc) evaluator_class.send(:define_method, attribute_name) do if @cached_attributes.key?(attribute_name) @cached_attributes[attribute_name] else @cached_attributes[attribute_name] = instance_exec(&attribute_proc) end end end end end
Version data entries
93 entries across 84 versions & 5 rubygems