Module: Flail::Rails::ControllerMethods
- Defined in:
- lib/flail/rails/controller_methods.rb
Class Method Summary collapse
Instance Method Summary collapse
- #flail_request_data ⇒ Object
- #flail_session_data ⇒ Object
- #flail_user_data ⇒ Object
-
#inject_flail_data_into_environment ⇒ Object
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).
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_data ⇒ Object
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_data ⇒ Object
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_data ⇒ Object
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_environment ⇒ Object
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 |