Move synchronize to setup method and make CONFIG private

This commit is contained in:
Santiago Pastorino 2013-10-24 17:42:20 -02:00
parent dc33dac56b
commit b44e1af5dd
2 changed files with 18 additions and 24 deletions

View File

@ -3,6 +3,8 @@ require 'active_model/serializable'
require 'active_model/serializer/associations' require 'active_model/serializer/associations'
require 'active_model/serializer/config' require 'active_model/serializer/config'
require 'thread'
module ActiveModel module ActiveModel
class Serializer class Serializer
include Serializable include Serializable
@ -14,7 +16,9 @@ module ActiveModel
end end
def setup def setup
yield CONFIG Mutex.new.synchronize do
yield CONFIG
end
end end
def embed(type, options={}) def embed(type, options={})

View File

@ -1,41 +1,31 @@
require 'thread'
module ActiveModel module ActiveModel
class Serializer class Serializer
class Config class Config
def initialize def initialize(data = {})
@data = {} @data = data
@mutex = Mutex.new
end end
def each(&block) def each(&block)
@mutex.synchronize do @data.each(&block)
@data.each(&block)
end
end end
def clear def clear
@mutex.synchronize do @data.clear
@data.clear
end
end end
def method_missing(name, *args) def method_missing(name, *args)
@mutex.synchronize do name = name.to_s
name = name.to_s return @data[name] if @data.include?(name)
return @data[name] if @data.include?(name) match = name.match(/\A(.*?)([?=]?)\Z/)
match = name.match(/\A(.*?)([?=]?)\Z/) case match[2]
case match[2] when "="
when "=" @data[match[1]] = args.first
@data[match[1]] = args.first when "?"
when "?" !!@data[match[1]]
!!@data[match[1]]
end
end end
end end
end end
CONFIG = Config.new CONFIG = Config.new('embed' => :objects) # :nodoc:
CONFIG.embed = :objects
end end
end end