Module: Onceler::BasicHelpers::ClassMethods
- Defined in:
- lib/onceler/basic_helpers.rb
Instance Method Summary collapse
- #before(*args, &block) ⇒ Object
- #before_once(&block) ⇒ Object
- #create_onceler! ⇒ Object
- #let_once(name, &block) ⇒ Object
- #once_scope?(scope) ⇒ Boolean
- #onceler(create_own = false) ⇒ Object
- #parent_onceler ⇒ Object
-
#subject_once(name = nil, &block) ⇒ Object
TODO NamedSubjectPreventSuper.
Instance Method Details
#before(*args, &block) ⇒ Object
61 62 63 64 65 66 67 |
# File 'lib/onceler/basic_helpers.rb', line 61 def before(*args, &block) if once_scope?(args.first) before_once(&block) else super(*args, &block) end end |
#before_once(&block) ⇒ Object
30 31 32 |
# File 'lib/onceler/basic_helpers.rb', line 30 def before_once(&block) onceler(:create) << block end |
#create_onceler! ⇒ Object
77 78 79 80 |
# File 'lib/onceler/basic_helpers.rb', line 77 def create_onceler! add_onceler_hooks! Recorder.new(self) end |
#let_once(name, &block) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/onceler/basic_helpers.rb', line 15 def let_once(name, &block) raise ArgumentError, "wrong number of arguments (0 for 1)" if name.nil? raise "#let or #subject called without a block" if block.nil? onceler(:create)[name] = block @current_let_once = name define_method(name) { onceler[name] } end |
#once_scope?(scope) ⇒ Boolean
34 35 36 |
# File 'lib/onceler/basic_helpers.rb', line 34 def once_scope?(scope) scope == :once end |
#onceler(create_own = false) ⇒ Object
69 70 71 72 73 74 75 |
# File 'lib/onceler/basic_helpers.rb', line 69 def onceler(create_own = false) if create_own @onceler ||= create_onceler! else @onceler || parent_onceler end end |
#parent_onceler ⇒ Object
82 83 84 85 |
# File 'lib/onceler/basic_helpers.rb', line 82 def parent_onceler return unless superclass.respond_to?(:onceler) superclass.onceler end |
#subject_once(name = nil, &block) ⇒ Object
TODO NamedSubjectPreventSuper
24 25 26 27 28 |
# File 'lib/onceler/basic_helpers.rb', line 24 def subject_once(name = nil, &block) name ||= :subject let_once(name, &block) alias_method :subject, name if name != :subject end |