Module: Niconico::Deferrable::ClassMethods
- Defined in:
- lib/niconico/deferrable.rb
Instance Method Summary collapse
- #deferrable(*keys) ⇒ Object
- #deferred_methods ⇒ Object
- #lazy(key, &block) ⇒ Object
- #lazy_methods ⇒ Object
Instance Method Details
#deferrable(*keys) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 |
# File 'lib/niconico/deferrable.rb', line 4 def deferrable(*keys) keys.each do |key| binding.eval(<<-EOM, __FILE__, __LINE__.succ) define_method(:#{key}) do get() if @#{key}.nil? && !fetched? @#{key} end EOM end self.deferred_methods.push *keys end |
#deferred_methods ⇒ Object
16 17 18 |
# File 'lib/niconico/deferrable.rb', line 16 def deferred_methods @deferred_methods ||= [] end |
#lazy(key, &block) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/niconico/deferrable.rb', line 20 def lazy(key, &block) define_method(key) do case when fetched? self.instance_eval &block when @preload[key] @preload[key] else get() self.instance_eval &block end end self.lazy_methods.push key end |
#lazy_methods ⇒ Object
35 36 37 |
# File 'lib/niconico/deferrable.rb', line 35 def lazy_methods @lazy_methods ||= [] end |