Module: RepoManager::AssetAccessors
Instance Method Summary collapse
- #create_accessor(attr) ⇒ Object
-
#create_accessors(*attrs) ⇒ void
Given an array, create accessors NOTE: This is similar to using method_missing with a whitelist.
- #create_reader(attr) ⇒ Object
- #create_writer(attr) ⇒ Object
Instance Method Details
#create_accessor(attr) ⇒ Object
19 20 21 22 |
# File 'lib/repo_manager/assets/asset_accessors.rb', line 19 def create_accessor(attr) create_reader(attr) create_writer(attr) end |
#create_accessors(*attrs) ⇒ void
This method returns an undefined value.
Given an array, create accessors NOTE: This is similar to using method_missing with a whitelist
9 10 11 12 13 14 15 16 17 |
# File 'lib/repo_manager/assets/asset_accessors.rb', line 9 def create_accessors(*attrs) return unless attrs raise ArgumentError, "Expected 'user_attributes' to be an array" unless attrs.is_a? Array # Define each of the attributes attrs.flatten.each do |attr| create_accessor(attr) end end |
#create_reader(attr) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/repo_manager/assets/asset_accessors.rb', line 24 def create_reader(attr) return unless attr method = "#{attr}".to_sym if self.kind_of? RepoManager::BaseAsset return if self.respond_to? method self.class.send(:define_method, method) do render(attributes[method]) end else return if respond_to? method define_method(method) do render(attributes[method]) end end end |
#create_writer(attr) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/repo_manager/assets/asset_accessors.rb', line 44 def create_writer(attr) return unless attr method = "#{attr}=".to_sym if self.kind_of? RepoManager::BaseAsset return if self.respond_to? method self.class.send(:define_method, method) do |value| attributes[attr] = value end else return if respond_to? method define_method(method) do |value| attributes[attr] = value end end end |