Class: Chassis::DirtySession

Inherits:
Proxy
  • Object
show all
Defined in:
lib/chassis/dirty_session.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ DirtySession

Returns a new instance of DirtySession.



5
6
7
8
9
# File 'lib/chassis/dirty_session.rb', line 5

def initialize(*args)
  super
  @original_values  = { }
  @new_values = { }
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object

Raises:

  • (MissingObject)


36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/chassis/dirty_session.rb', line 36

def method_missing(name, *args, &block)
  raise MissingObject, name unless __getobj__

  if writer_method?(name)
    handle_writer_method name, *args, &block
  elsif changed_method?(name)
    handle_changed_method name
  elsif original_method?(name)
    handle_original_method name
  else
    __getobj__.send name, *args, &block
  end
end

Instance Method Details

#changesObject



27
28
29
# File 'lib/chassis/dirty_session.rb', line 27

def changes
  Set.new original_values.keys
end

#clean?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/chassis/dirty_session.rb', line 11

def clean?
  new_values.empty?
end

#dirty?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/chassis/dirty_session.rb', line 15

def dirty?
  !clean?
end

#new_valuesObject



23
24
25
# File 'lib/chassis/dirty_session.rb', line 23

def new_values
  @new_values
end

#original_valuesObject



19
20
21
# File 'lib/chassis/dirty_session.rb', line 19

def original_values
  @original_values
end

#reset!Object



31
32
33
34
# File 'lib/chassis/dirty_session.rb', line 31

def reset!
  original_values.clear
  new_values.clear
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
53
54
55
56
# File 'lib/chassis/dirty_session.rb', line 50

def respond_to_missing?(name, include_private = false)
  if changed_method?(name) || original_method?(name)
    __getobj__.respond_to? reader_method(name)
  else
    super
  end
end