Sha256: 98c15476cf4b154ee313463890ac9e63497785a15da580f7457e8d913698e3b6

Contents?: true

Size: 1.46 KB

Versions: 2

Compression:

Stored size: 1.46 KB

Contents

module CouchRest

  # CouchRest Model Configuration support, stolen from Carrierwave by jnicklas
  #    http://github.com/jnicklas/carrierwave/blob/master/lib/carrierwave/uploader/configuration.rb

  module Model
    module Configuration
      extend ActiveSupport::Concern

      included do
        add_config :model_type_key
        add_config :mass_assign_any_attribute
        add_config :auto_update_design_doc

        configure do |config|
          config.model_type_key = 'model' # was 'couchrest-type'
          config.mass_assign_any_attribute = false
          config.auto_update_design_doc = true
        end
      end

      module ClassMethods

        def add_config(name)
          class_eval <<-RUBY, __FILE__, __LINE__ + 1
            def self.#{name}(value=nil)
              @#{name} = value if value
              return @#{name} if self.object_id == #{self.object_id} || defined?(@#{name})
              name = superclass.#{name}
              return nil if name.nil? && !instance_variable_defined?("@#{name}")
              @#{name} = name && !name.is_a?(Module) && !name.is_a?(Symbol) && !name.is_a?(Numeric) && !name.is_a?(TrueClass) && !name.is_a?(FalseClass) ? name.dup : name
            end

            def self.#{name}=(value)
              @#{name} = value
            end

            def #{name}
              self.class.#{name}
            end
          RUBY
        end

        def configure
          yield self
        end
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
couchrest_model-1.1.0.beta4 lib/couchrest/model/configuration.rb
couchrest_model-1.1.0.beta3 lib/couchrest/model/configuration.rb