Sha256: 6163e07be9463b94594ce04cdf14d969801c99e3f8bccce07c625bb8da75fc99
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
require 'with_model/base' module WithModel class Dsl attr_reader :model_initialization def initialize(name, example_group) dsl = self @example_group = example_group @table_name = table_name = "with_model_#{name}_#{$$}" @model_initialization = lambda {|*|} const_name = name.to_s.camelize.to_sym original_const_defined = Object.const_defined?(const_name) original_const_value = Object.const_get(const_name) if original_const_defined example_group.class_eval do attr_accessor name end model = Class.new(WithModel::Base) example_group.before do silence_warnings { Object.const_set(const_name, model) } Object.const_get(const_name).class_eval do set_table_name table_name self.class_eval(&dsl.model_initialization) end send("#{name}=", model) end example_group.after do model._with_model_deconstructor if defined?(Mixico) Object.send(:remove_const, const_name) Object.const_set(const_name, original_const_value) if original_const_defined end end def table(&block) @example_group.with_table(@table_name, &block) end def model(&block) @model_initialization = block end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
with_model-0.1.2 | lib/with_model/dsl.rb |