Module: Kernel
- Defined in:
- lib/dyna_mo/environment.rb
Instance Method Summary collapse
- #dynamo_context(context_name, &block) ⇒ Object
- #dynamo_define(target_name_or_instance, default_context_name, &block) ⇒ Object
- #dynamo_super(*args) ⇒ Object
Instance Method Details
#dynamo_context(context_name, &block) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/dyna_mo/environment.rb', line 41 def dynamo_context(context_name, &block) raise "block is not given for dynamo_context" unless block_given? # get context, apply context and yield block ::DynaMo::Environment.synchronize do ::DynaMo::Environment.apply_environment end Thread.current[:dynamo_contexts] ||= {} Thread.current[:dynamo_contexts][context_name] = true begin yield ensure Thread.current[:dynamo_contexts].delete(context_name) end end |
#dynamo_define(target_name_or_instance, default_context_name, &block) ⇒ Object
30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dyna_mo/environment.rb', line 30 def dynamo_define(target_name_or_instance, default_context_name, &block) raise "block is not given for dynamo_define" unless block_given? # target_name_or_instance accepts module instance, to help programmer to avoid typo target = target_name_or_instance.is_a?(Module) ? target_name_or_instance.name : target_name_or_instance.to_s ::DynaMo::Environment.synchronize do # get/create context object and evaluate block with it context = ::DynaMo::Environment.contexts(target, default_context_name) context.instance_exec(&block) end end |
#dynamo_super(*args) ⇒ Object
56 57 58 |
# File 'lib/dyna_mo/environment.rb', line 56 def dynamo_super(*args) Thread.current[:dynamo_stack].last.call(*args) end |