Module: Kernel
- Defined in:
- lib/platanus/onetime.rb
Overview
onetime.rb : One time setter.
Copyright April 2012, Ignacio Baixas [email protected].
Instance Method Summary collapse
-
#onetime_attr_accessor(_name) ⇒ Object
Adds a one time writer instead of a regular writer.
-
#onetime_attr_writer(_name) ⇒ Object
Creates a one time writer method.
Instance Method Details
#onetime_attr_accessor(_name) ⇒ Object
Adds a one time writer instead of a regular writer.
-
Args :
-
_name-> Attribute name.
-
29 30 31 32 |
# File 'lib/platanus/onetime.rb', line 29 def onetime_attr_accessor(_name) attr_reader(_name) onetime_attr_writer(_name) end |
#onetime_attr_writer(_name) ⇒ Object
Creates a one time writer method.
A one time writer is undefined after the first time it is used.
-
Args :
-
_name-> Attribute name.
-
14 15 16 17 18 19 20 21 22 |
# File 'lib/platanus/onetime.rb', line 14 def onetime_attr_writer(_name) define_method _name.to_s + '=' do |_value| instance_variable_set('@' + _name.to_s, _value) # Unset method by modifying singleton class. = (class << self; self; end) .send(:undef_method,_name.to_s + '=') _value end end |