Module: ExceptionNotifierHelper

Defined in:
lib/exception_notifier_helper.rb

Constant Summary collapse

VIEW_PATH =
"views/exception_notifier"
APP_PATH =
"#{RAILS_ROOT}/app/#{VIEW_PATH}"
PARAM_FILTER_REPLACEMENT =
"[FILTERED]"
COMPAT_MODE =
defined?(RAILS_GEM_VERSION) ? RAILS_GEM_VERSION < '2' : false

Instance Method Summary collapse

Instance Method Details

#exclude_raw_post_parameters?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/exception_notifier_helper.rb', line 45

def exclude_raw_post_parameters?
  @controller && @controller.respond_to?(:filter_parameters)
end

#filter_sensitive_post_data_from_env(env_key, env_value) ⇒ Object



53
54
55
56
57
# File 'lib/exception_notifier_helper.rb', line 53

def filter_sensitive_post_data_from_env(env_key, env_value)
  return env_value unless exclude_raw_post_parameters?
  return PARAM_FILTER_REPLACEMENT if (env_key =~ /RAW_POST_DATA/i)
  return COMPAT_MODE ? @controller.filter_parameters({env_key => env_value}).values[0] : @controller.__send__(:filter_parameters, {env_key => env_value}).values[0]
end

#filter_sensitive_post_data_parameters(parameters) ⇒ Object



49
50
51
# File 'lib/exception_notifier_helper.rb', line 49

def filter_sensitive_post_data_parameters(parameters)
  exclude_raw_post_parameters? ? COMPAT_MODE ? @controller.filter_parameters(parameters) : @controller.__send__(:filter_parameters, parameters) : parameters
end

#inspect_model_object(model, locals = {}) ⇒ Object



27
28
29
30
31
32
# File 'lib/exception_notifier_helper.rb', line 27

def inspect_model_object(model, locals={})
  render_overridable(:inspect_model,
    :locals => { :inspect_model => model,
                 :show_instance_variables => true,
                 :show_attributes => true }.merge(locals))
end

#inspect_value(value) ⇒ Object



34
35
36
37
38
39
# File 'lib/exception_notifier_helper.rb', line 34

def inspect_value(value)
  len = 512
  result = object_to_yaml(value).gsub(/\n/, "\n  ").strip
  result = result[0,len] + "... (#{result.length-len} bytes more)" if result.length > len+20
  result
end

#object_to_yaml(object) ⇒ Object



41
42
43
# File 'lib/exception_notifier_helper.rb', line 41

def object_to_yaml(object)
  object.to_yaml.sub(/^---\s*/m, "")
end

#render_overridable(partial, options = {}) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/exception_notifier_helper.rb', line 18

def render_overridable(partial, options={})
  if File.exist?(path = "#{APP_PATH}/_#{partial}.html.erb") ||
      File.exist?(path = "#{File.dirname(__FILE__)}/../#{VIEW_PATH}/_#{partial}.html.erb") ||
      File.exist?(path = "#{APP_PATH}/_#{partial}.rhtml") ||
      File.exist?(path = "#{File.dirname(__FILE__)}/../#{VIEW_PATH}/_#{partial}.rhtml")
    render(options.merge(:file => path, :use_full_path => false))
  end
end

#render_section(section) ⇒ Object



9
10
11
12
13
14
15
16
# File 'lib/exception_notifier_helper.rb', line 9

def render_section(section)
  RAILS_DEFAULT_LOGGER.info("rendering section #{section.inspect}")
  summary = render_overridable(section).strip
  unless summary.blank?
    title = render_overridable(:title, :locals => { :title => section }).strip
    "#{title}\n\n#{summary.gsub(/^/, "  ")}\n\n"
  end
end