Module: HyperResource::Modules::Utils::ClassMethods

Defined in:
lib/hyper_resource/modules/utils.rb

Instance Method Summary collapse

Instance Method Details

#class_attribute(*names) ⇒ Object

Inheritable class attribute, kinda like in Rails.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/hyper_resource/modules/utils.rb', line 11

def class_attribute(*names)
  names.map(&:to_sym).each do |name|
    instance_eval <<-EOT
      def #{name}=(val)
        @#{name} = val
      end
      def #{name}
        return @#{name} if defined?(@#{name})
        return superclass.#{name} if superclass.respond_to?(:#{name})
        nil
      end
    EOT
  end
end

#fallback_attribute(*names) ⇒ Object

Instance attributes which fall back to class attributes.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/hyper_resource/modules/utils.rb', line 27

def fallback_attribute(*names)
  names.map(&:to_sym).each do |name|
    class_eval <<-EOT
      def #{name}=(val)
        @#{name} = val
      end
      def #{name}
        return @#{name} if defined?(@#{name})
        return self.class.#{name} if self.class.respond_to?(:#{name})
        nil
      end
    EOT
  end
end