Class: Freezer::FrozenRecordProxy

Inherits:
BasicObject
Defined in:
lib/freezer/frozen_record_proxy.rb

Instance Method Summary collapse

Constructor Details

#initialize(record, silent = false) ⇒ FrozenRecordProxy

Returns a new instance of FrozenRecordProxy.



21
22
23
24
25
26
# File 'lib/freezer/frozen_record_proxy.rb', line 21

def initialize(record, silent = false)
  @silent = silent
  @record = record
  @record.readonly!
  @record.freeze
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object (private)



30
31
32
33
34
35
36
37
38
# File 'lib/freezer/frozen_record_proxy.rb', line 30

def method_missing(method, *args, &block)
  begin
    @record.__send__(method, *args, &block)
  rescue ::RuntimeError => e
    @record.__send__(:raise, e) unless @silent && e.message == "can't modify frozen Hash"
  rescue ::ActiveRecord::ReadOnlyRecord => e
    @record.__send__(:raise, e) unless @silent
  end
end