Module: Flail::Rails::ControllerMethods

Defined in:
lib/flail/rails/controller_methods.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



5
6
7
# File 'lib/flail/rails/controller_methods.rb', line 5

def self.included(base)
  base.send(:before_filter, :inject_flail_data_into_environment)
end

Instance Method Details

#flail_request_dataObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/flail/rails/controller_methods.rb', line 20

def flail_request_data
  {
    :parameters => params.to_hash,
    :session_data => flail_session_data,
    :target_url => request.url,
    :referer_url => request.referer,
    :user_agent => request.user_agent,
    :user => flail_user_data
  }
end

#flail_session_dataObject



31
32
33
34
35
36
37
# File 'lib/flail/rails/controller_methods.rb', line 31

def flail_session_data
  if session.respond_to?(:to_hash)
    session.to_hash
  else
    session.data
  end
end

#flail_user_dataObject



39
40
41
42
43
44
45
46
47
# File 'lib/flail/rails/controller_methods.rb', line 39

def flail_user_data
  user = current_user

  user.attributes.select do |k, v|
    /^(id|name|username|email|login)$/ === k unless v.blank?
  end
rescue NoMethodError, NameError
  {}
end

#inject_flail_data_into_environmentObject

This method is inserted into the host application’s controllers as a before_filter and is used to pass the parameters, session data, user data, and URL data from the app’s controller to the flail gem via the env variable (data is always passed, even if no exception is thrown). This hook only works when a host app’s controller is called. Routing error exceptions are thrown before the controller is called so those errors are handled elsewhere and contain less information (mainly the user data is missing).



15
16
17
18
# File 'lib/flail/rails/controller_methods.rb', line 15

def inject_flail_data_into_environment
  request.env['flail.request'] ||= request
  request.env['flail.request.data'] ||= flail_request_data
end