Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PropKey
- class << self # Class methods
- def resource_id
- "5"
- end
- def type
- "2"
- end
- def creation_date
- "2005-03-02"
- end
- def getlastmodified
- "2006-10-03"
- end
- def displayname
- "test object"
- end
- def resourcetype
- "file"
- end
- def owner
- "mnutt"
- end
- def getcontenttype
- "text/html"
- end
- #Media property
- def getcontentlength
- 42
- end
- end
- end
- module Properties
- # Define properties that are shared by all resources.
- unless(const_defined?('DEFAULT_PROPERTIES'))
- DEFAULT_PROPERTIES = {:resource_id => {:key => PropKey.resource_id},
- :type => {:key => PropKey.type},
- :creation_date => {:key => PropKey.creation_date},
- :last_modified => {:key => PropKey.getlastmodified},
- :display_name => {:key => PropKey.displayname},
- :resource_type => {:key => PropKey.resourcetype},
- :owner => {:key => PropKey.owner},
- :content_type => {:key => PropKey.getcontenttype}}
- end
- # Setup class instance variables. These are filled out by the
- # define_properties call right after the class methods definition.
- @property_names = {}
- @protected_properties = []
- module ClassMethods
- attr_accessor :property_names
- # Defines valid properties for this class
- #
- def define_properties(props = {})
- props.each do |name, attr|
- module_eval <<-"end;"
- self.property_names[:#{name}] = attr[:key]
- def #{name}=(value)
- @properties[:#{name}] = value
- end
- def #{name}
- @properties[:#{name}]
- end
- end;
- end
- end
- end # End ClassMethods module
- extend ClassMethods
- # Add the class methods to the model it is being mixed into
- def self.append_features(klass)
- super
- klass.extend(ClassMethods)
- end
- self.define_properties(DEFAULT_PROPERTIES)
- end
- class Media
- include Properties
- define_properties :content_length => {:key => PropKey.getcontentlength}
- end
- # ==============================================================
- # Error:
- # NoMethodError: undefined method `[]=' for nil:NilClass
- # from ./mixins.rb:74:in `define_properties'
- # from ./mixins.rb:73:in `define_properties'
- # from ./mixins.rb:104
- # from (irb):1
Add Comment
Please, Sign In to add comment