Sha256: 79812482b24d2c8b70045c7cc039f3c34cdb0bb69dd6e70175696c2314c15413
Contents?: true
Size: 1.45 KB
Versions: 1
Compression:
Stored size: 1.45 KB
Contents
require 'set' module CurrencyCloud class Resource def self.resource(resource=nil) @resource ||= resource end def self.actions(*actions) @actions ||= actions @actions.each do |action| self.class_eval do # self.class.instance_eval # metaclass.instance_eval action_module = CurrencyCloud::Actions.const_get(action.to_s.capitalize) self.extend(action_module) end end end def initialize(object) @object = object @changed_attributes = Set.new set_accessors(keys) end def keys @object.keys end def inspect "#<#{self.class}:0x#{self.object_id.to_s(16)} #{@object.inspect}>" end private def changed? !@changed_attributes.empty? end def metaclass class << self; self; end end def set_accessors(keys) metaclass.instance_eval do keys.each do |key| define_method(key) { @object[key] } define_method("#{key}=".to_sym) do |value| @object[key] = value @changed_attributes << key end end end end def self.get(url, params={}) new(request.get(build_url(url), params)) end def self.post(url, params={}) new(request.post(build_url(url), params)) end def self.build_url(url) "#{self.resource}/#{url}" end def self.request RequestHandler.new end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
currency_cloud-0.5 | lib/currency_cloud/resource.rb |