Class: HoptoadNotifier::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/hoptoad_notifier/configuration.rb

Overview

Used to set up and modify settings for the notifier.

Constant Summary collapse

OPTIONS =
[:api_key, :backtrace_filters, :development_environments,
:development_lookup, :environment_name, :host,
:http_open_timeout, :http_read_timeout, :ignore, :ignore_by_filters,
:ignore_user_agent, :notifier_name, :notifier_url, :notifier_version,
:params_filters, :project_root, :port, :protocol, :proxy_host,
:proxy_pass, :proxy_port, :proxy_user, :secure, :framework, :js_notifier].freeze
DEFAULT_PARAMS_FILTERS =
%w(password password_confirmation).freeze
DEFAULT_BACKTRACE_FILTERS =
[
  lambda { |line|
    if defined?(HoptoadNotifier.configuration.project_root) && HoptoadNotifier.configuration.project_root.to_s != '' 
      line.gsub(/#{HoptoadNotifier.configuration.project_root}/, "[PROJECT_ROOT]")
    else
      line
    end
  },
  lambda { |line| line.gsub(/^\.\//, "") },
  lambda { |line|
    if defined?(Gem)
      Gem.path.inject(line) do |line, path|
        line.gsub(/#{path}/, "[GEM_ROOT]")
      end
    end
  },
  lambda { |line| line if line !~ %r{lib/hoptoad_notifier} }
].freeze
IGNORE_DEFAULT =
['ActiveRecord::RecordNotFound',
'ActionController::RoutingError',
'ActionController::InvalidAuthenticityToken',
'CGI::Session::CookieStore::TamperedWithCookie',
'ActionController::UnknownAction']

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/hoptoad_notifier/configuration.rb', line 118

def initialize
  @secure                   = false
  @host                     = 'hoptoadapp.com'
  @http_open_timeout        = 2
  @http_read_timeout        = 5
  @params_filters           = DEFAULT_PARAMS_FILTERS.dup
  @backtrace_filters        = DEFAULT_BACKTRACE_FILTERS.dup
  @ignore_by_filters        = []
  @ignore                   = IGNORE_DEFAULT.dup
  @ignore_user_agent        = []
  @development_environments = %w(development test cucumber)
  @development_lookup       = true
  @js_notifier              = false
  @notifier_name            = 'Hoptoad Notifier'
  @notifier_version         = VERSION
  @notifier_url             = 'http://hoptoadapp.com'
  @framework                = 'Standalone'
end

Instance Attribute Details

#api_keyObject

The API key for your project, found on the project edit form.



13
14
15
# File 'lib/hoptoad_notifier/configuration.rb', line 13

def api_key
  @api_key
end

#backtrace_filtersObject (readonly)

A list of filters for cleaning and pruning the backtrace. See #filter_backtrace.



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

def backtrace_filters
  @backtrace_filters
end

#development_environmentsObject

A list of environments in which notifications should not be sent.



60
61
62
# File 'lib/hoptoad_notifier/configuration.rb', line 60

def development_environments
  @development_environments
end

#development_lookupObject

true if you want to check for production errors matching development errors, false otherwise.



63
64
65
# File 'lib/hoptoad_notifier/configuration.rb', line 63

def development_lookup
  @development_lookup
end

#environment_nameObject

The name of the environment the application is running in



69
70
71
# File 'lib/hoptoad_notifier/configuration.rb', line 69

def environment_name
  @environment_name
end

#frameworkObject

The framework HoptoadNotifier is configured to use



87
88
89
# File 'lib/hoptoad_notifier/configuration.rb', line 87

def framework
  @framework
end

#hostObject

The host to connect to (defaults to hoptoadapp.com).



16
17
18
# File 'lib/hoptoad_notifier/configuration.rb', line 16

def host
  @host
end

#http_open_timeoutObject

The HTTP open timeout in seconds (defaults to 2).



26
27
28
# File 'lib/hoptoad_notifier/configuration.rb', line 26

def http_open_timeout
  @http_open_timeout
end

#http_read_timeoutObject

The HTTP read timeout in seconds (defaults to 5).



29
30
31
# File 'lib/hoptoad_notifier/configuration.rb', line 29

def http_read_timeout
  @http_read_timeout
end

#ignoreObject (readonly)

A list of exception classes to ignore. The array can be appended to.



54
55
56
# File 'lib/hoptoad_notifier/configuration.rb', line 54

def ignore
  @ignore
end

#ignore_by_filtersObject (readonly)

A list of filters for ignoring exceptions. See #ignore_by_filter.



51
52
53
# File 'lib/hoptoad_notifier/configuration.rb', line 51

def ignore_by_filters
  @ignore_by_filters
end

#ignore_user_agentObject (readonly)

A list of user agents that are being ignored. The array can be appended to.



57
58
59
# File 'lib/hoptoad_notifier/configuration.rb', line 57

def ignore_user_agent
  @ignore_user_agent
end

#js_notifierObject

true if you want to enable the JavaScript notifier in production environments



66
67
68
# File 'lib/hoptoad_notifier/configuration.rb', line 66

def js_notifier
  @js_notifier
end

#loggerObject

The logger used by HoptoadNotifier



84
85
86
# File 'lib/hoptoad_notifier/configuration.rb', line 84

def logger
  @logger
end

#notifier_nameObject

The name of the notifier library being used to send notifications (such as “Hoptoad Notifier”)



75
76
77
# File 'lib/hoptoad_notifier/configuration.rb', line 75

def notifier_name
  @notifier_name
end

#notifier_urlObject

The url of the notifier library being used to send notifications



81
82
83
# File 'lib/hoptoad_notifier/configuration.rb', line 81

def notifier_url
  @notifier_url
end

#notifier_versionObject

The version of the notifier library being used to send notifications (such as “1.0.2”)



78
79
80
# File 'lib/hoptoad_notifier/configuration.rb', line 78

def notifier_version
  @notifier_version
end

#params_filtersObject (readonly)

A list of parameters that should be filtered out of what is sent to Hoptoad. By default, all “password” attributes will have their contents replaced.



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

def params_filters
  @params_filters
end

#portObject

The port on which your Hoptoad server runs (defaults to 443 for secure connections, 80 for insecure connections).



20
21
22
# File 'lib/hoptoad_notifier/configuration.rb', line 20

def port
  @port
end

#project_rootObject

The path to the project in which the error occurred, such as the RAILS_ROOT



72
73
74
# File 'lib/hoptoad_notifier/configuration.rb', line 72

def project_root
  @project_root
end

#proxy_hostObject

The hostname of your proxy server (if using a proxy)



32
33
34
# File 'lib/hoptoad_notifier/configuration.rb', line 32

def proxy_host
  @proxy_host
end

#proxy_passObject

The password to use when logging into your proxy server (if using a proxy)



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

def proxy_pass
  @proxy_pass
end

#proxy_portObject

The port of your proxy server (if using a proxy)



35
36
37
# File 'lib/hoptoad_notifier/configuration.rb', line 35

def proxy_port
  @proxy_port
end

#proxy_userObject

The username to use when logging into your proxy server (if using a proxy)



38
39
40
# File 'lib/hoptoad_notifier/configuration.rb', line 38

def proxy_user
  @proxy_user
end

#secureObject Also known as: secure?

true for https connections, false for http connections.



23
24
25
# File 'lib/hoptoad_notifier/configuration.rb', line 23

def secure
  @secure
end

Instance Method Details

#[](option) ⇒ Object

Allows config options to be read like a hash

Parameters:

  • option (Symbol)

    Key for a given attribute



183
184
185
# File 'lib/hoptoad_notifier/configuration.rb', line 183

def [](option)
  send(option)
end

#environment_filtersObject



219
220
221
222
# File 'lib/hoptoad_notifier/configuration.rb', line 219

def environment_filters
  warn 'config.environment_filters has been deprecated and has no effect.'
  []
end

#filter_backtrace(&block) {|line| ... } ⇒ Object

Takes a block and adds it to the list of backtrace filters. When the filters run, the block will be handed each line of the backtrace and can modify it as necessary.

Examples:

config.filter_bracktrace do |line|
  line.gsub(/^#{Rails.root}/, "[RAILS_ROOT]")
end

Parameters:

  • block (Proc)

    The new backtrace filter.

Yield Parameters:

  • line (String)

    A line in the backtrace.



148
149
150
# File 'lib/hoptoad_notifier/configuration.rb', line 148

def filter_backtrace(&block)
  self.backtrace_filters << block
end

#ignore_by_filter(&block) {|data| ... } ⇒ Object

Takes a block and adds it to the list of ignore filters. When the filters run, the block will be handed the exception.

Examples:

config.ignore_by_filter do |exception_data|
  true if exception_data[:error_class] == "RuntimeError"
end

Parameters:

  • block (Proc)

    The new ignore filter

Yield Parameters:

  • data (Hash)

    The exception data given to HoptoadNotifier.notify

Yield Returns:

  • (Boolean)

    If the block returns true the exception will be ignored, otherwise it will be processed by hoptoad.



162
163
164
# File 'lib/hoptoad_notifier/configuration.rb', line 162

def ignore_by_filter(&block)
  self.ignore_by_filters << block
end

#ignore_only=(names) ⇒ Object

Overrides the list of default ignored errors.

Parameters:

  • names (Array<Exception>)

    A list of exceptions to ignore.



169
170
171
# File 'lib/hoptoad_notifier/configuration.rb', line 169

def ignore_only=(names)
  @ignore = [names].flatten
end

#ignore_user_agent_only=(names) ⇒ Object

Overrides the list of default ignored user agents

Parameters:

  • A (Array<String>)

    list of user agents to ignore



176
177
178
# File 'lib/hoptoad_notifier/configuration.rb', line 176

def ignore_user_agent_only=(names)
  @ignore_user_agent = [names].flatten
end

#merge(hash) ⇒ Object

Returns a hash of all configurable options merged with hash

Parameters:

  • hash (Hash)

    A set of configuration options that will take precedence over the defaults



197
198
199
# File 'lib/hoptoad_notifier/configuration.rb', line 197

def merge(hash)
  to_hash.merge(hash)
end

#protocolObject



211
212
213
214
215
216
217
# File 'lib/hoptoad_notifier/configuration.rb', line 211

def protocol
  if secure?
    'https'
  else
    'http'
  end
end

#public?Boolean

Determines if the notifier will send notices.

Returns:

  • (Boolean)

    Returns false if in a development environment, true otherwise.



203
204
205
# File 'lib/hoptoad_notifier/configuration.rb', line 203

def public?
  !development_environments.include?(environment_name)
end

#to_hashObject

Returns a hash of all configurable options



188
189
190
191
192
# File 'lib/hoptoad_notifier/configuration.rb', line 188

def to_hash
  OPTIONS.inject({}) do |hash, option|
    hash.merge(option.to_sym => send(option))
  end
end