Sha256: 6edd3bf47418eb2ca9ce0afd9edb0e513ea10dc8d30bca64034ee9c9cdb94d04
Contents?: true
Size: 1.19 KB
Versions: 3
Compression:
Stored size: 1.19 KB
Contents
module Capabilities extend ActiveSupport::Concern included do has_one :capabilities, :class_name => 'rest_api/base/attribute_hash' include Helpers end def gear_sizes @gear_sizes ||= capabilities[:gear_sizes].map(&:to_sym) end def to_capabilities Capabilities::Cacheable.from(self) end module Helpers def gears_free? gears_free > 0 end def gears_free [max_gears - consumed_gears, 0].max end end class Cacheable include Helpers # Changing this order will break serialization of cached data ATTRS = [:max_gears, :consumed_gears, :gear_sizes].each{ |s| attr_reader s } def initialize(*args) arg = args.each ATTRS.each{ |t| send("#{t}=", arg.next) } rescue StopIteration end def self.from(obj) new(*(obj.is_a?(Array) ? obj : ATTRS.map{ |s| obj.send(s) })) if obj end def to_capabilities self end def to_a ATTRS.map{ |s| send(s) } end private def max_gears=(i) @max_gears = Integer(i) end def consumed_gears=(i) @consumed_gears = Integer(i) end def gear_sizes=(arr) @gear_sizes = Array(arr) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
openshift-origin-console-1.3.4 | app/models/capabilities.rb |
openshift-origin-console-1.3.3 | app/models/capabilities.rb |
openshift-origin-console-1.3.2 | app/models/capabilities.rb |