Module: Vault::Properties
- Defined in:
- lib/vault/properties.rb
Defined Under Namespace
Classes: Property
Instance Method Summary collapse
- #define_property_methods(name) ⇒ Object
- #key(key = nil) ⇒ Object
- #properties ⇒ Object
- #property(name, primary = false, &block) ⇒ Object
- #property_names ⇒ Object
Instance Method Details
#define_property_methods(name) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/vault/properties.rb', line 29 def define_property_methods(name) class_eval <<-ruby, __FILE__, __LINE__ def #{name} read_attribute(:#{name}) end def #{name}=(value) write_attribute(:#{name}, value) end ruby end |
#key(key = nil) ⇒ Object
3 4 5 6 |
# File 'lib/vault/properties.rb', line 3 def key(key=nil) return @_key if key.nil? @_key = property(key, true).name end |
#properties ⇒ Object
21 22 23 |
# File 'lib/vault/properties.rb', line 21 def properties @_properties ||= Set.new end |
#property(name, primary = false, &block) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/vault/properties.rb', line 8 def property(name, primary=false, &block) Property.new(name, primary, &block).tap do |prop| properties << prop define_property_methods(prop.name) # FIXME: Ugh, ActiveModel fails with this, I can't do incremental method # definition, you have to define them all at once (so undefine/define # each time if you don't know all the properties upfront, like here.) undefine_attribute_methods define_attribute_methods(property_names) end end |
#property_names ⇒ Object
25 26 27 |
# File 'lib/vault/properties.rb', line 25 def property_names properties.map(&:name) end |