Class: Exceptional::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/exceptional/config.rb

Defined Under Namespace

Classes: ConfigurationException

Constant Summary collapse

DEFAULTS =
{
  :ssl => false,
  :remote_host_http => 'plugin.getexceptional.com',
  :http_open_timeout => 2,
  :http_read_timeout => 4,
  :disabled_by_default => %w(development test)
}

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.api_keyObject

Returns the value of attribute api_key.



17
18
19
# File 'lib/exceptional/config.rb', line 17

def api_key
  @api_key
end

.enabledObject

Returns the value of attribute enabled.



17
18
19
# File 'lib/exceptional/config.rb', line 17

def enabled
  @enabled
end

.http_proxy_hostObject

Returns the value of attribute http_proxy_host.



18
19
20
# File 'lib/exceptional/config.rb', line 18

def http_proxy_host
  @http_proxy_host
end

.http_proxy_passwordObject

Returns the value of attribute http_proxy_password.



18
19
20
# File 'lib/exceptional/config.rb', line 18

def http_proxy_password
  @http_proxy_password
end

.http_proxy_portObject

Returns the value of attribute http_proxy_port.



18
19
20
# File 'lib/exceptional/config.rb', line 18

def http_proxy_port
  @http_proxy_port
end

.http_proxy_usernameObject

Returns the value of attribute http_proxy_username.



18
19
20
# File 'lib/exceptional/config.rb', line 18

def http_proxy_username
  @http_proxy_username
end

.ssl=(value) ⇒ Object (writeonly)

Sets the attribute ssl

Parameters:

  • value

    the value to set the attribute ssl to.



19
20
21
# File 'lib/exceptional/config.rb', line 19

def ssl=(value)
  @ssl = value
end

Class Method Details

.application_environmentObject



52
53
54
# File 'lib/exceptional/config.rb', line 52

def application_environment
  ENV['RACK_ENV'] || ENV['RAILS_ENV']|| 'development'
end

.application_rootObject



61
62
63
# File 'lib/exceptional/config.rb', line 61

def application_root
  (defined?(Rails) && Rails.respond_to?(:root)) ? Rails.root : Dir.pwd
end

.http_open_timeoutObject



81
82
83
# File 'lib/exceptional/config.rb', line 81

def http_open_timeout
  @http_open_timeout ||= DEFAULTS[:http_open_timeout]
end

.http_read_timeoutObject



85
86
87
# File 'lib/exceptional/config.rb', line 85

def http_read_timeout
  @http_read_timeout ||= DEFAULTS[:http_read_timeout]
end

.load(config_file = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/exceptional/config.rb', line 21

def load(config_file=nil)
  if (config_file && File.file?(config_file))
    begin
      config = YAML.load(ERB.new(File.new(config_file).read).result)
      env_config = config[application_environment] || {}
      @api_key = config['api-key'] ||
                 env_config['api-key'] ||
                 ENV['EXCEPTIONAL_API_KEY']

      @http_proxy_host = config['http-proxy-host']
      @http_proxy_port = config['http-proxy-port']
      @http_proxy_username = config['http-proxy-username']
      @http_proxy_password = config['http-proxy-password']
      @http_open_timeout = config['http-open-timeout']
      @http_read_timeout = config['http-read-timeout']

      @ssl = config['ssl'] || env_config['ssl']
      @enabled = env_config['enabled']
      @remote_port = config['remote-port'].to_i unless config['remote-port'].nil?
      @remote_host = config['remote-host'] unless config['remote-host'].nil?
    rescue Exception => e
      raise ConfigurationException.new("Unable to load configuration #{config_file} for environment #{application_environment} : #{e.message}")
    end
  end
end

.remote_hostObject



69
70
71
# File 'lib/exceptional/config.rb', line 69

def remote_host
  @remote_host ||= DEFAULTS[:remote_host_http]
end

.remote_portObject



73
74
75
# File 'lib/exceptional/config.rb', line 73

def remote_port
  @remote_port ||= ssl? ? 443 : 80
end

.resetObject



77
78
79
# File 'lib/exceptional/config.rb', line 77

def reset
  @enabled = @ssl = @remote_host = @remote_port = @api_key = nil
end

.should_send_to_api?Boolean

Returns:

  • (Boolean)


56
57
58
59
# File 'lib/exceptional/config.rb', line 56

def should_send_to_api?
  return @enabled unless @enabled.nil?
  @enabled = !(DEFAULTS[:disabled_by_default].include?(application_environment))
end

.ssl?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/exceptional/config.rb', line 65

def ssl?
  @ssl ||= DEFAULTS[:ssl]
end