Module: SimpleWorkflow::Detour

Included in:
Controller, Helper, Middleware
Defined in:
lib/simple_workflow/detour.rb

Overview

Utility methods to manage the breadcrumb history

Instance Method Summary collapse

Instance Method Details

#pop_detour(session) ⇒ Object



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

def pop_detour(session)
  detours = session[:detours]
  return nil unless detours
  detour = detours.pop
  Rails.logger.debug "popped detour: #{detour.inspect} #{session[:detours].size} more"
  reset_workflow(session) if detours.empty?
  detour
end

#reset_workflow(session) ⇒ Object



23
24
25
# File 'lib/simple_workflow/detour.rb', line 23

def reset_workflow(session)
  session.delete(:detours)
end

#store_detour_in_session(session, options) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'lib/simple_workflow/detour.rb', line 3

def store_detour_in_session(session, options)
  if session[:detours] && session[:detours].last == options
    Rails.logger.try(:debug, "Ignored duplicate detour: #{options.inspect}")
    return
  end
  session[:detours] ||= []
  session[:detours] << options
  Rails.logger
       .try(:debug, "Added detour (#{session[:detours].try(:size) || 0}): #{options.inspect}")
end