Module: Cerializable

Defined in:
lib/cerializable.rb,
lib/cerializable/model.rb,
lib/cerializable/version.rb,
lib/cerializable/cerializer.rb

Defined Under Namespace

Modules: Model Classes: Cerializer

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.setup(options) ⇒ Object

:nodoc:



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/cerializable.rb', line 6

def self.setup(options) # :nodoc:
  # evaluate code in the context of the base class
  options[:base].class_eval do

    # define a 'cerializer' class method on the base class.
    # it returns a cerializer object which does the serialization for instances of the class.
    define_singleton_method :cerializer, proc {
      @cerializer ||= Cerializer.new.tap do |cerializer|
        serializer_module = options[:serialize_with] || "#{ options[:base].name  }Serializer".constantize
        # use class_eval to include the serializer module in the cerializer's eigenclass
        cerializer.class_eval { include serializer_module }
      end
    }

  end
end