Sha256: 8a47968bf7596795a9daad75858ed29ae65daa8786310c856a812bd3aead1189

Contents?: true

Size: 519 Bytes

Versions: 64

Compression:

Stored size: 519 Bytes

Contents

class SetterTrap < ActiveSupport::BasicObject
  class << self
    def rollback_sets(obj)
      trapped = new(obj)
      yield(trapped).tap { trapped.rollback_sets }
    end
  end

  def initialize(obj)
    @cache = {}
    @obj = obj
  end

  def respond_to?(method)
    @obj.respond_to?(method)
  end

  def method_missing(method, *args, &proc)
    @cache[method] ||= @obj.send($`) if method.to_s =~ /=$/
    @obj.send method, *args, &proc
  end

  def rollback_sets
    @cache.each { |k, v| @obj.send k, v }
  end
end

Version data entries

64 entries across 63 versions & 11 rubygems

Version Path
activeresource-2.3.18 test/setter_trap.rb
activeresource_csi-2.3.5.p8 test/setter_trap.rb
activeresource-2.3.17 test/setter_trap.rb
activeresource_csi-2.3.5.p7 test/setter_trap.rb
activeresource_csi-2.3.5.20130130071128 test/setter_trap.rb
activeresource_csi-2.3.5.p6 test/setter_trap.rb
activeresource-2.3.16 test/setter_trap.rb
activeresource-2.3.15 test/setter_trap.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/activeresource-2.3.14/test/setter_trap.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/activeresource-2.3.12/test/setter_trap.rb
activeresource-2.3.14 test/setter_trap.rb
kajam-1.0.3.rc2 vendor/rails/activeresource/test/setter_trap.rb
activeresource-2.3.12 test/setter_trap.rb
radiant-1.0.0.rc2 vendor/rails/activeresource/test/setter_trap.rb
radiant-1.0.0.rc1 vendor/rails/activeresource/test/setter_trap.rb
webroar-0.5.0 src/admin_panel/vendor/rails/activeresource/test/setter_trap.rb
activeresource-2.3.11 test/setter_trap.rb
radiantcms-couchrest_model-0.2.4 vendor/rails/activeresource/test/setter_trap.rb
radiantcms-couchrest_model-0.2.2 vendor/rails/activeresource/test/setter_trap.rb
radiantcms-couchrest_model-0.2.1 vendor/rails/activeresource/test/setter_trap.rb