Sha256: 4a3d36afab516bf5155a7b86c95d5d4c214a029e3ff8945219d0791a8a12c991

Contents?: true

Size: 559 Bytes

Versions: 21

Compression:

Stored size: 559 Bytes

Contents

module ModelMacros
  # Create a new microscope model
  def microscope(klass_name, options = {}, &block)
    spawn_model klass_name, ActiveRecord::Base do
      acts_as_microscope options
      instance_exec(&block) if block
    end
  end

  protected

  # Create a new model class
  def spawn_model(klass_name, parent_klass, &block)
    Object.instance_eval { remove_const klass_name } if Object.const_defined?(klass_name)
    Object.const_set(klass_name, Class.new(parent_klass))
    Object.const_get(klass_name).class_eval(&block) if block_given?
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
microscope-0.6.1 spec/support/macros/model_macros.rb
microscope-0.6 spec/support/macros/model_macros.rb
microscope-0.5.10 spec/support/macros/model_macros.rb
microscope-0.5.9 spec/support/macros/model_macros.rb
microscope-0.5.8 spec/support/macros/model_macros.rb
microscope-0.5.7 spec/support/macros/model_macros.rb
microscope-0.5.6.1 spec/support/macros/model_macros.rb
microscope-0.5.6 spec/support/macros/model_macros.rb
microscope-0.5.5 spec/support/macros/model_macros.rb
microscope-0.5.4 spec/support/macros/model_macros.rb
microscope-0.5.3 spec/support/macros/model_macros.rb
microscope-0.5.2 spec/support/macros/model_macros.rb
microscope-0.5.1 spec/support/macros/model_macros.rb
microscope-0.5 spec/support/macros/model_macros.rb
microscope-0.4.2 spec/support/macros/model_macros.rb
microscope-0.4.1 spec/support/macros/model_macros.rb
microscope-0.4 spec/support/macros/model_macros.rb
microscope-0.3 spec/support/macros/model_macros.rb
microscope-0.2 spec/support/macros/model_macros.rb
microscope-0.1.1 spec/support/macros/model_macros.rb