rack_hoptoad 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/README.md +11 -4
  2. data/Rakefile +15 -12
  3. data/lib/rack/hoptoad.rb +28 -11
  4. metadata +3 -3
data/README.md CHANGED
@@ -13,15 +13,22 @@ Throw something like this in your config.ru to enable notifications.
13
13
 
14
14
  You can also exclude certain sensitive environmental variables using the block syntax
15
15
 
16
- require 'rack/hoptoad'
17
-
18
16
  use Rack::Hoptoad, 'fd48c7d26f724503a0280f808f44b339fc65fab8' do |notifier|
19
17
  notifier.environment_filters << %w(MY_SECRET_KEY MY_SECRET_TOKEN)
20
18
  end
21
19
 
20
+ If you want to post exceptions in an environment other than staging or production(the defaults)
21
+
22
+ use Rack::Hoptoad, 'fd48c7d26f724503a0280f808f44b339fc65fab8' do |notifier|
23
+ notifier.report_under << 'custom'
24
+ end
25
+
26
+ If you want to use an environmental variable other than RACK_ENV and still have it post
22
27
 
23
- If your RACK_ENV variable is set to production or staging it'll actually post
24
- to hoptoad. It won't process in the other environments.
28
+ use Rack::Hoptoad, 'fd48c7d26f724503a0280f808f44b339fc65fab8', 'MERB_ENV' do |notifier|
29
+ notifier.report_under << 'custom'
30
+ notifier.environment_filters << %w(MY_SECRET_KEY MY_SECRET_TOKEN)
31
+ end
25
32
 
26
33
  Installation
27
34
  ============
data/Rakefile CHANGED
@@ -1,30 +1,33 @@
1
- require 'rubygems'
2
1
  require 'rake/gempackagetask'
3
2
  require 'rubygems/specification'
4
3
  require 'spec/rake/spectask'
5
4
  require 'date'
6
5
  require 'bundler'
7
6
 
7
+ Bundler.require_env
8
+
9
+ require 'lib/rack/hoptoad'
10
+
8
11
  GEM = "rack_hoptoad"
9
- GEM_VERSION = "0.1.0"
12
+ GEM_VERSION = Rack::Hoptoad::VERSION
10
13
  AUTHOR = "Corey Donohoe"
11
14
  EMAIL = "atmos@atmos.org"
12
15
  HOMEPAGE = "http://github.com/atmos/rack_hoptoad"
13
16
  SUMMARY = "A gem that provides hoptoad notifications from rack"
14
17
 
15
18
  spec = Gem::Specification.new do |s|
16
- s.name = GEM
17
- s.version = GEM_VERSION
18
- s.platform = Gem::Platform::RUBY
19
- s.has_rdoc = true
19
+ s.name = GEM
20
+ s.version = GEM_VERSION
21
+ s.platform = Gem::Platform::RUBY
22
+ s.has_rdoc = true
20
23
  s.extra_rdoc_files = ["LICENSE", 'TODO']
21
- s.summary = SUMMARY
22
- s.description = s.summary
23
- s.author = AUTHOR
24
- s.email = EMAIL
25
- s.homepage = HOMEPAGE
24
+ s.summary = SUMMARY
25
+ s.description = s.summary
26
+ s.author = AUTHOR
27
+ s.email = EMAIL
28
+ s.homepage = HOMEPAGE
26
29
 
27
- manifest = Bundler::Environment.load(File.dirname(__FILE__) + '/Gemfile')
30
+ manifest = Bundler::Dsl.load_gemfile(File.dirname(__FILE__) + '/Gemfile')
28
31
  manifest.dependencies.each do |d|
29
32
  next unless d.only && d.only.include?('release')
30
33
  s.add_dependency(d.name, d.version)
data/lib/rack/hoptoad.rb CHANGED
@@ -6,11 +6,15 @@ module Rack
6
6
  # Catches all exceptions raised from the app it wraps and
7
7
  # posts the results to hoptoad.
8
8
  class Hoptoad
9
- attr_accessor :api_key, :environment_filters
9
+ VERSION = '0.1.1'
10
10
 
11
- def initialize(app, api_key = nil)
12
- @app = app
13
- @api_key = api_key
11
+ attr_accessor :api_key, :environment_filters, :report_under, :rack_environment
12
+
13
+ def initialize(app, api_key = nil, rack_environment = 'RACK_ENV')
14
+ @app = app
15
+ @api_key = api_key
16
+ @report_under = %w(staging production)
17
+ @rack_environment = rack_environment
14
18
  @environment_filters = %w(AWS_ACCESS_KEY AWS_SECRET_ACCESS_KEY AWS_ACCOUNT SSH_AUTH_SOCK)
15
19
  yield self if block_given?
16
20
  end
@@ -22,7 +26,8 @@ module Rack
22
26
  rescue StandardError, LoadError, SyntaxError => boom
23
27
  # TODO don't allow exceptions from send_notification to
24
28
  # propogate
25
- send_notification boom, env
29
+ notified = send_notification boom, env
30
+ env['hoptoad.notified'] = notified
26
31
  raise
27
32
  end
28
33
  send_notification env['rack.exception'], env if env['rack.exception']
@@ -33,24 +38,36 @@ module Rack
33
38
  @environment_filters.flatten
34
39
  end
35
40
  private
41
+ def report?
42
+ report_under.include?(rack_env)
43
+ end
36
44
 
37
45
  def send_notification(exception, env)
46
+ return true unless report?
38
47
  request = Rack::Request.new(env)
39
48
 
40
49
  options = {
41
50
  :api_key => api_key,
42
51
  :url => "#{request.scheme}://#{request.host}#{request.path}",
43
52
  :request => request,
44
- :framework_env => ENV['RACK_ENV'] || 'development',
53
+ :framework_env => rack_env,
45
54
  :notifier_name => 'Rack::Hoptoad',
46
- :notifier_version => '0.0.6',
55
+ :notifier_version => VERSION,
47
56
  :session => env['rack.session']
48
57
  }
49
58
 
50
- if %w(staging production).include?(ENV['RACK_ENV'])
51
- ToadHopper.new(api_key).post!(exception, options, {'X-Hoptoad-Client-Name' => 'Rack::Hoptoad'})
52
- end
53
- env['hoptoad.notified'] = true
59
+ result = toadhopper.post!(exception, options, {'X-Hoptoad-Client-Name' => 'Rack::Hoptoad'})
60
+ result.errors.empty?
61
+ end
62
+
63
+ def rack_env
64
+ ENV[rack_environment] || 'development'
65
+ end
66
+
67
+ def toadhopper
68
+ toad = ToadHopper(api_key)
69
+ toad.filters = environment_filter_keys
70
+ toad
54
71
  end
55
72
 
56
73
  def extract_body(env)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack_hoptoad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Donohoe
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-15 00:00:00 -08:00
12
+ date: 2009-12-25 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.9.1
33
+ version: 0.9.4
34
34
  version:
35
35
  description: A gem that provides hoptoad notifications from rack
36
36
  email: atmos@atmos.org