~michaelforrest/use-case-mapper/trunk

« back to all changes in this revision

Viewing changes to vendor/rails/activeresource/test/setter_trap.rb

  • Committer: Richard Lee (Canonical)
  • Date: 2010-10-15 15:17:58 UTC
  • mfrom: (190.1.3 use-case-mapper)
  • Revision ID: richard.lee@canonical.com-20101015151758-wcvmfxrexsongf9d
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
class SetterTrap < ActiveSupport::BasicObject
2
 
  class << self
3
 
    def rollback_sets(obj)
4
 
      trapped = new(obj)
5
 
      yield(trapped).tap { trapped.rollback_sets }
6
 
    end
7
 
  end
8
 
 
9
 
  def initialize(obj)
10
 
    @cache = {}
11
 
    @obj = obj
12
 
  end
13
 
 
14
 
  def respond_to?(method)
15
 
    @obj.respond_to?(method)
16
 
  end
17
 
 
18
 
  def method_missing(method, *args, &proc)
19
 
    @cache[method] ||= @obj.send($`) if method.to_s =~ /=$/
20
 
    @obj.send method, *args, &proc
21
 
  end
22
 
 
23
 
  def rollback_sets
24
 
    @cache.each { |k, v| @obj.send k, v }
25
 
  end
26
 
end