Module: Memento

Defined in:
lib/memento.rb,
lib/memento/state.rb,
lib/memento/result.rb,
lib/memento/session.rb,
lib/memento/version.rb,
lib/memento/action/create.rb,
lib/memento/action/update.rb,
lib/memento/action/destroy.rb,
lib/memento/action_controller_methods.rb

Defined Under Namespace

Modules: Action, ActionControllerMethods, ActiveRecordMethods Classes: ErrorOnRewind, Result, ResultArray, Session, State

Constant Summary collapse

VERSION =
"0.4.3"

Class Method Summary collapse

Class Method Details

.active?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/memento.rb', line 37

def active?
  !!session && !ignore?
end

.add_state(action_type, record) ⇒ Object



32
33
34
35
# File 'lib/memento.rb', line 32

def add_state(action_type, record)
  return unless save_session
  session.add_state(action_type, record)
end

.ignoreObject



41
42
43
44
45
46
# File 'lib/memento.rb', line 41

def ignore
  Thread.current[:memento_ignore] = true
  yield
ensure
  Thread.current[:memento_ignore] = false
end

.instanceObject

For backwards compatibility (was a Singleton)



10
11
12
# File 'lib/memento.rb', line 10

def instance
  self
end

.serializerObject



52
53
54
# File 'lib/memento.rb', line 52

def serializer
  @serializer ||= YAML
end

.serializer=(serializer) ⇒ Object



48
49
50
# File 'lib/memento.rb', line 48

def serializer=(serializer)
  @serializer = serializer
end

.start(user_or_id) ⇒ Object



22
23
24
25
# File 'lib/memento.rb', line 22

def start(user_or_id)
  user = user_or_id.is_a?(User) ? user_or_id : User.where(:id => user_or_id).first
  self.session = user ? Memento::Session.new(:user => user) : nil
end

.stopObject



27
28
29
30
# File 'lib/memento.rb', line 27

def stop
  session.destroy if session && session.states.count.zero?
  self.session = nil
end

.watch(user_or_id) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/memento.rb', line 14

def watch(user_or_id)
  start(user_or_id)
  yield
  session && !session.new_record? && session.states.any? ? session : false
ensure
  stop
end