module PropertyBagged::ClassMethods
Public Instance Methods
bagged_property(property_name, options = {})
click to toggle source
# File lib/property_bagged.rb, line 24 def bagged_property(property_name, options = {}) default = options[:default] class_eval <<-END def #{property_name} self.property_bag['#{property_name.to_s}'] ||= #{default.inspect} end def #{property_name}=(val) self.property_bag ||= {} self.property_bag = self.property_bag.merge('#{property_name}' => val) end END end
property_bag_with_name(property_bag_name)
click to toggle source
# File lib/property_bagged.rb, line 7 def property_bag_with_name(property_bag_name) class_eval <<-END def property_bag r = read_attribute #{property_bag_name.to_sym.inspect} if String === r YAML.load(r) else r || {} end end def property_bag=(val) write_attribute(#{property_bag_name.to_sym.inspect}, val) end END end