Sha256: 19f299556260fb3653186de1bf6f6aa2dbf470462e2c7061749972e1efcf88ec
Contents?: true
Size: 1.09 KB
Versions: 2
Compression:
Stored size: 1.09 KB
Contents
module Ramaze module ThreadAccessor def ThreadAccessor.each(*names) names.each do |name| if name.respond_to?(:to_hash) name.to_hash.each do |key, meth| key, meth = key.to_sym, meth.to_sym yield key, meth end else key = meth = name.to_sym yield key, meth end end end def thread_accessor(*names, &initializer) thread_writer(*names) thread_reader(*names, &initializer) end def thread_writer(*names) ThreadAccessor.each(*names) do |key, meth| define_method("#{meth}="){|obj| Thread.current[key] = obj } end end def thread_reader(*names, &initializer) ThreadAccessor.each(*names) do |key, meth| if initializer define_method(meth) do unless Thread.current.key?(key) Thread.current[key] = instance_eval(&initializer) else Thread.current[key] end end else define_method(meth){ Thread.current[key] } end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ramaze-0.3.9.1 | lib/ramaze/snippets/ramaze/thread_accessor.rb |
ramaze-0.3.9 | lib/ramaze/snippets/ramaze/thread_accessor.rb |