Sha256: 8bd9fbd287fa4a89675efa8f1c9e090138e99119333efa7604bf4e54a1d5af49

Contents?: true

Size: 710 Bytes

Versions: 5

Compression:

Stored size: 710 Bytes

Contents

module ModelMacros
  # Create a new ActiveRecord model
  def spawn_model(klass_name, &block)
    spawn_object klass_name, ActiveRecord::Base do
      instance_exec(&block) if block
    end
  end

  # Create a new Encore::Serializer object
  def spawn_serializer(klass_name, &block)
    spawn_object klass_name, Encore::Serializer::Base do
      instance_exec(&block) if block
    end
  end

protected

  # Create a new model class
  def spawn_object(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

5 entries across 5 versions & 1 rubygems

Version Path
encore-0.2.3 spec/support/macros/model_macros.rb
encore-0.2.2 spec/support/macros/model_macros.rb
encore-0.2.1 spec/support/macros/model_macros.rb
encore-0.2 spec/support/macros/model_macros.rb
encore-0.1 spec/support/macros/model_macros.rb