Module: SerializeWithOptions
- Defined in:
- lib/serialize_with_options.rb,
lib/serialize_with_options/railtie.rb,
lib/serialize_with_options/version.rb
Defined Under Namespace
Modules: InstanceMethods
Classes: Config, Railtie
Constant Summary
collapse
- VERSION =
"0.3.0"
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.extended(base) ⇒ Object
4
5
6
7
|
# File 'lib/serialize_with_options.rb', line 4
def self.extended(base)
base.class_attribute :serialization_conf
base.class_attribute :serialization_opts
end
|
Instance Method Details
#serialization_configuration(set) ⇒ Object
21
22
23
24
25
|
# File 'lib/serialize_with_options.rb', line 21
def serialization_configuration(set)
conf = self.serialization_conf
conf &&= conf[set] || conf[:default]
conf.try(:dup) || { :methods => nil, :only => nil, :except => nil }
end
|
#serialization_options(set) ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/serialize_with_options.rb', line 27
def serialization_options(set)
options = self.serialization_opts
options[set] ||= serialization_configuration(set).tap do |opts|
includes = opts.delete(:includes)
if includes
opts[:include] = includes.inject({}) do |hash, class_name|
if class_name.is_a? Hash
hash.merge(class_name)
else
begin
klass = class_name.to_s.classify.constantize
hash[class_name] = klass.serialization_configuration(set)
hash[class_name][:include] = nil if hash[class_name].delete(:includes)
hash
rescue NameError
hash.merge(class_name => { :include => nil })
end
end
end
end
end
self.serialization_opts = options
options[set]
end
|
#serialize_with_options(set = :default, &block) ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
|
# File 'lib/serialize_with_options.rb', line 9
def serialize_with_options(set = :default, &block)
conf = self.serialization_conf || {}
opts = self.serialization_opts || {}
conf[set] = Config.new.instance_eval(&block)
self.serialization_conf = conf
self.serialization_opts = opts
include InstanceMethods
end
|