honeybadger 1.12.0.beta3 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/Appraisals +45 -60
  2. data/CHANGELOG.md +3 -28
  3. data/Gemfile.lock +1 -1
  4. data/MIT-LICENSE +1 -2
  5. data/Rakefile +4 -8
  6. data/features/step_definitions/rack_steps.rb +2 -1
  7. data/features/support/env.rb +0 -2
  8. data/gemfiles/rack.gemfile.lock +125 -0
  9. data/gemfiles/rails2.3.gemfile.lock +141 -0
  10. data/gemfiles/rails3.0.gemfile.lock +193 -0
  11. data/gemfiles/rails3.1.gemfile.lock +203 -0
  12. data/gemfiles/rails3.2.gemfile.lock +201 -0
  13. data/gemfiles/rails4.0.gemfile.lock +197 -0
  14. data/gemfiles/rails4.1.gemfile.lock +202 -0
  15. data/gemfiles/rake.gemfile +1 -1
  16. data/gemfiles/rake.gemfile.lock +124 -0
  17. data/gemfiles/sinatra.gemfile.lock +124 -0
  18. data/honeybadger.gemspec +11 -27
  19. data/lib/honeybadger.rb +10 -15
  20. data/lib/honeybadger/configuration.rb +4 -9
  21. data/lib/honeybadger/integrations/sidekiq.rb +9 -17
  22. data/lib/honeybadger/notice.rb +10 -45
  23. data/lib/honeybadger/rack.rb +54 -8
  24. data/lib/honeybadger/rails.rb +4 -5
  25. data/lib/honeybadger/railtie.rb +3 -4
  26. data/lib/honeybadger/user_feedback.rb +67 -3
  27. data/lib/honeybadger/user_informer.rb +21 -3
  28. data/spec/honeybadger/configuration_spec.rb +1 -5
  29. data/spec/honeybadger/notice_spec.rb +1 -126
  30. data/spec/honeybadger/rails_spec.rb +2 -4
  31. metadata +15 -31
  32. data/features/standalone.feature +0 -73
  33. data/features/step_definitions/standalone_steps.rb +0 -12
  34. data/features/step_definitions/thor_steps.rb +0 -4
  35. data/features/support/test.thor +0 -22
  36. data/features/thor.feature +0 -5
  37. data/gemfiles/binding_of_caller.gemfile +0 -8
  38. data/gemfiles/rails.gemfile +0 -11
  39. data/gemfiles/standalone.gemfile +0 -7
  40. data/gemfiles/thor.gemfile +0 -8
  41. data/lib/honeybadger/dependency.rb +0 -65
  42. data/lib/honeybadger/exception_extensions.rb +0 -35
  43. data/lib/honeybadger/integrations.rb +0 -5
  44. data/lib/honeybadger/integrations/delayed_job.rb +0 -20
  45. data/lib/honeybadger/integrations/delayed_job/plugin.rb +0 -31
  46. data/lib/honeybadger/integrations/thor.rb +0 -29
  47. data/lib/honeybadger/payload.rb +0 -29
  48. data/lib/honeybadger/rack/error_notifier.rb +0 -60
  49. data/lib/honeybadger/rack/user_feedback.rb +0 -74
  50. data/lib/honeybadger/rack/user_informer.rb +0 -28
  51. data/spec/honeybadger/dependency_spec.rb +0 -134
  52. data/spec/honeybadger/exception_extensions_spec.rb +0 -40
  53. data/spec/honeybadger/integrations/delayed_job_spec.rb +0 -48
  54. data/spec/honeybadger/integrations/sidekiq_spec.rb +0 -60
  55. data/spec/honeybadger/integrations/thor_spec.rb +0 -29
  56. data/spec/honeybadger/payload_spec.rb +0 -27
data/Appraisals CHANGED
@@ -1,82 +1,67 @@
1
- appraise 'standalone' do
1
+ appraise 'rails2.3' do
2
+ gem 'rails', '~> 2.3.18'
3
+ gem 'rake', '0.9.5'
2
4
  gem 'honeybadger', :path => '../'
5
+ gem 'capistrano', '~> 2.0'
3
6
  end
4
7
 
5
- if RUBY_VERSION > '1.9' && RUBY_PLATFORM !~ /java/
6
- appraise 'binding_of_caller' do
7
- gem 'binding_of_caller'
8
- gem 'honeybadger', :path => '../'
9
- end
10
- end
11
-
12
- appraise 'rake' do
13
- gem 'rake'
8
+ appraise 'rails3.0' do
9
+ gem 'rails', '~> 3.0.17'
14
10
  gem 'honeybadger', :path => '../'
11
+ gem 'better_errors', :require => false
12
+ gem 'rack-mini-profiler', '~>0.1.31 ', :require => false
13
+ gem 'capistrano', '~> 2.0'
15
14
  end
16
15
 
17
- appraise 'thor' do
18
- gem 'thor'
16
+ appraise 'rails3.1' do
17
+ gem 'rails', '~> 3.1.12'
19
18
  gem 'honeybadger', :path => '../'
19
+ gem 'better_errors', :require => false
20
+ gem 'rack-mini-profiler', :require => false
21
+ gem 'capistrano', '~> 2.0'
20
22
  end
21
23
 
22
- appraise 'rack' do
23
- gem 'rack'
24
+ appraise 'rails3.2' do
25
+ gem 'rails', '~> 3.2.12'
24
26
  gem 'honeybadger', :path => '../'
27
+ gem 'better_errors', :require => false
28
+ gem 'rack-mini-profiler', :require => false
29
+ gem 'capistrano', '~> 2.0'
25
30
  end
26
31
 
27
- appraise 'sinatra' do
28
- gem 'sinatra'
32
+ appraise 'rails4.0' do
33
+ gem 'rails', '~> 4.0.2'
29
34
  gem 'honeybadger', :path => '../'
35
+ gem 'better_errors', :require => false
36
+ gem 'rack-mini-profiler', :require => false
37
+ gem 'capistrano', '~> 2.0'
30
38
  end
31
39
 
32
- appraise 'rails2.3' do
33
- gem 'rails', '~> 2.3.18'
34
- gem 'rake', '0.9.5'
40
+ appraise 'rails4.1' do
41
+ gem 'rails', '~> 4.1.0.beta1'
35
42
  gem 'honeybadger', :path => '../'
36
- gem 'capistrano', '~> 2.0'
43
+ gem 'capistrano', '~> 3.0'
44
+ gem 'better_errors', :require => false
45
+ gem 'rack-mini-profiler', :require => false
37
46
  end
38
47
 
39
- if RUBY_VERSION > '1.9'
40
- appraise 'rails3.0' do
41
- gem 'rails', '~> 3.0.17'
42
- gem 'honeybadger', :path => '../'
43
- gem 'better_errors', :require => false
44
- gem 'rack-mini-profiler', '~>0.1.31 ', :require => false
45
- gem 'capistrano', '~> 2.0'
46
- end
47
-
48
- appraise 'rails3.1' do
49
- gem 'rails', '~> 3.1.12'
50
- gem 'honeybadger', :path => '../'
51
- gem 'better_errors', :require => false
52
- gem 'rack-mini-profiler', :require => false
53
- gem 'capistrano', '~> 2.0'
54
- end
48
+ # appraise 'rails-edge' do
49
+ # gem 'rails', :git => 'git@github.com:rails/rails.git'
50
+ # gem 'honeybadger', :path => '../'
51
+ # gem 'capistrano', '~> 2.0'
52
+ # end
55
53
 
56
- appraise 'rails3.2' do
57
- gem 'rails', '~> 3.2.12'
58
- gem 'honeybadger', :path => '../'
59
- gem 'better_errors', :require => false
60
- gem 'rack-mini-profiler', :require => false
61
- gem 'capistrano', '~> 2.0'
62
- end
54
+ appraise 'rake' do
55
+ gem 'sinatra'
56
+ gem 'honeybadger', :path => '../'
57
+ end
63
58
 
64
- if RUBY_VERSION > '1.9.2'
65
- # The latest officially supported Rails release
66
- appraise 'rails' do
67
- gem 'rails', '~> 4.0.3'
68
- gem 'honeybadger', :path => '../'
69
- gem 'capistrano', '~> 3.0'
70
- gem 'better_errors', :require => false
71
- gem 'rack-mini-profiler', :require => false
72
- end
59
+ appraise 'rack' do
60
+ gem 'rack'
61
+ gem 'honeybadger', :path => '../'
62
+ end
73
63
 
74
- appraise 'rails4.1' do
75
- gem 'rails', '~> 4.1.0.beta1'
76
- gem 'honeybadger', :path => '../'
77
- gem 'capistrano', '~> 3.0'
78
- gem 'better_errors', :require => false
79
- gem 'rack-mini-profiler', :require => false
80
- end
81
- end
64
+ appraise 'sinatra' do
65
+ gem 'sinatra'
66
+ gem 'honeybadger', :path => '../'
82
67
  end
@@ -1,39 +1,14 @@
1
- ## Honeybadger 1.12.0 (unreleased) ##
1
+ ## Honeybadger 1.13.0 ##
2
2
 
3
- * Catch exceptions in Thor tasks.
4
-
5
- *Ryan Sonnek*
6
-
7
- * Add option to send local_variables when binding_of_caller is
8
- installed. In order to enable it, the gem must be present in the
9
- project, and `config.send_local_variables` must be `true`.
10
-
11
- *Joshua Wood*
12
-
13
- * Create Honeybadger::Rack namespace and add deprecation warnings for
14
- old middleware.
3
+ * Add native support for Sidekiq 3.0
15
4
 
16
5
  *Joshua Wood*
17
6
 
18
- * Support ruby 2.1 with Exception#cause
19
-
20
- *Ravil Bayramgalin*
21
-
22
7
  * Clean action_dispatch.request.parameters from payload.
23
8
 
24
9
  *Joshua Wood*
25
10
 
26
- * Add support for 3rd-party integrations via dependency injection.
27
-
28
- *Joshua Wood*
29
-
30
- * Delayed Job support
31
-
32
- *Joshua Wood*
33
-
34
- * Add native support for Sidekiq
35
-
36
- *Joshua Wood*
11
+ ## Honeybadger 1.12.0 (skipped) ##
37
12
 
38
13
  ## Honeybadger 1.11.2 ##
39
14
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- honeybadger (1.12.0.beta3)
4
+ honeybadger (1.13.0)
5
5
  json
6
6
 
7
7
  GEM
@@ -1,8 +1,7 @@
1
- Copyright (c) 2012-2013, Honeybadger Industries LLC
1
+ Portions Copyright (c) 2012-2013, Honeybadger Industries LLC
2
2
  Portions Copyright (c) 2012 Noah Lorang
3
3
  Portions Copyright (c) 2007-2012, Exceptional DBA Airbrake.io
4
4
  Portions Copyright (c) 2009 Brenton Fletcher (http://i.bloople.net i@bloople.net)
5
- Portions Copyright (c) 2014 Charlie Somerville
6
5
 
7
6
  The original version of the Honeybadger gem was based on the
8
7
  MIT-licensed Airbrake gem. All code contained herein that is
data/Rakefile CHANGED
@@ -61,7 +61,7 @@ Cucumber::Rake::Task.new(:cucumber) do |t|
61
61
  t.fork = true
62
62
  t.cucumber_opts = ['--format', 'progress', '--tags', '~@pending']
63
63
 
64
- unless ENV['BUNDLE_GEMFILE'] =~ /rails[^2]/
64
+ unless ENV['BUNDLE_GEMFILE'] =~ /rails(3|4)/
65
65
  t.cucumber_opts << '--tags ~@rails_3'
66
66
  end
67
67
 
@@ -72,12 +72,8 @@ Cucumber::Rake::Task.new(:cucumber) do |t|
72
72
  t.cucumber_opts << 'features/rack.feature'
73
73
  when /rake/
74
74
  t.cucumber_opts << 'features/rake.feature'
75
- when /thor/
76
- t.cucumber_opts << 'features/thor.feature'
77
75
  when /sinatra/
78
76
  t.cucumber_opts << 'features/sinatra.feature'
79
- else
80
- t.cucumber_opts << 'features/standalone.feature'
81
77
  end unless ENV['FEATURE']
82
78
  end
83
79
 
@@ -94,13 +90,13 @@ end
94
90
 
95
91
  desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
96
92
  task :release => :build do
97
- unless `git branch` =~ /^\* master$/
98
- puts "You must be on the master branch to release!"
93
+ unless `git branch` =~ /^\* 1.x/
94
+ puts "You must be on the 1.x branch to release!"
99
95
  exit!
100
96
  end
101
97
  sh "git commit --allow-empty -a -m 'Release #{version}'"
102
98
  sh "git tag v#{version}"
103
- sh "git push origin master"
99
+ sh "git push origin 1.x"
104
100
  sh "git push origin v#{version}"
105
101
  sh "gem push pkg/#{name}-#{version}.gem"
106
102
  end
@@ -3,10 +3,11 @@ Given /^the following Rack app:$/ do |definition|
3
3
  end
4
4
 
5
5
  When /^I perform a Rack request to "([^\"]*)"$/ do |url|
6
+ shim_file = File.join(PROJECT_ROOT, 'features', 'support', 'honeybadger_shim.rb.template')
6
7
  request_file = File.join(TEMP_DIR, 'rack_request.rb')
7
8
  File.open(request_file, 'w') do |file|
8
9
  file.puts "require 'rubygems'"
9
- file.puts IO.read(SHIM_FILE)
10
+ file.puts IO.read(shim_file)
10
11
  file.puts IO.read(RACK_FILE)
11
12
  file.puts "env = Rack::MockRequest.env_for(#{url.inspect})"
12
13
  file.puts "status, headers, body = app.call(env)"
@@ -5,8 +5,6 @@ PROJECT_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'
5
5
  TEMP_DIR = File.join(PROJECT_ROOT, 'tmp').freeze
6
6
  LOCAL_RAILS_ROOT = File.join(TEMP_DIR, 'rails_root').freeze
7
7
  RACK_FILE = File.join(TEMP_DIR, 'rack_app.rb').freeze
8
- RUBY_FILE = File.join(TEMP_DIR, 'ruby_app.rb').freeze
9
- SHIM_FILE = File.join(PROJECT_ROOT, 'features', 'support', 'honeybadger_shim.rb.template')
10
8
 
11
9
  Before do
12
10
  FileUtils.rm_rf(LOCAL_RAILS_ROOT)
@@ -0,0 +1,125 @@
1
+ PATH
2
+ remote: /Users/josh/code/honeybadger-ruby
3
+ specs:
4
+ honeybadger (1.13.0)
5
+ json
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.3.5)
11
+ appraisal (0.5.2)
12
+ bundler
13
+ rake
14
+ aruba (0.5.4)
15
+ childprocess (>= 0.3.6)
16
+ cucumber (>= 1.1.1)
17
+ rspec-expectations (>= 2.7.0)
18
+ builder (3.2.2)
19
+ capistrano (2.15.5)
20
+ highline
21
+ net-scp (>= 1.0.0)
22
+ net-sftp (>= 2.0.0)
23
+ net-ssh (>= 2.0.14)
24
+ net-ssh-gateway (>= 1.1.0)
25
+ childprocess (0.4.0)
26
+ ffi (~> 1.0, >= 1.0.11)
27
+ coderay (1.1.0)
28
+ crack (0.4.1)
29
+ safe_yaml (~> 0.9.0)
30
+ cucumber (1.3.10)
31
+ builder (>= 2.1.2)
32
+ diff-lcs (>= 1.1.3)
33
+ gherkin (~> 2.12)
34
+ multi_json (>= 1.7.5, < 2.0)
35
+ multi_test (>= 0.0.2)
36
+ diff-lcs (1.2.5)
37
+ ffi (1.9.3)
38
+ formatador (0.2.4)
39
+ fuubar (1.3.2)
40
+ rspec (>= 2.14.0, < 3.1.0)
41
+ ruby-progressbar (~> 1.3)
42
+ gherkin (2.12.2)
43
+ multi_json (~> 1.3)
44
+ growl (1.0.3)
45
+ guard (1.8.3)
46
+ formatador (>= 0.2.4)
47
+ listen (~> 1.3)
48
+ lumberjack (>= 1.0.2)
49
+ pry (>= 0.9.10)
50
+ thor (>= 0.14.6)
51
+ guard-rspec (3.1.0)
52
+ guard (>= 1.8)
53
+ rspec (~> 2.13)
54
+ highline (1.6.20)
55
+ json (1.8.1)
56
+ listen (1.3.1)
57
+ rb-fsevent (>= 0.9.3)
58
+ rb-inotify (>= 0.9)
59
+ rb-kqueue (>= 0.2)
60
+ lumberjack (1.0.4)
61
+ method_source (0.8.2)
62
+ multi_json (1.8.4)
63
+ multi_test (0.0.3)
64
+ net-scp (1.1.2)
65
+ net-ssh (>= 2.6.5)
66
+ net-sftp (2.1.2)
67
+ net-ssh (>= 2.6.5)
68
+ net-ssh (2.7.0)
69
+ net-ssh-gateway (1.2.0)
70
+ net-ssh (>= 2.6.5)
71
+ pry (0.9.12.4)
72
+ coderay (~> 1.0)
73
+ method_source (~> 0.8)
74
+ slop (~> 3.4)
75
+ rack (1.5.2)
76
+ rack-protection (1.5.2)
77
+ rack
78
+ rake (10.1.1)
79
+ rb-fsevent (0.9.4)
80
+ rb-inotify (0.9.3)
81
+ ffi (>= 0.5.0)
82
+ rb-kqueue (0.2.0)
83
+ ffi (>= 0.5.0)
84
+ rspec (2.14.1)
85
+ rspec-core (~> 2.14.0)
86
+ rspec-expectations (~> 2.14.0)
87
+ rspec-mocks (~> 2.14.0)
88
+ rspec-core (2.14.7)
89
+ rspec-expectations (2.14.4)
90
+ diff-lcs (>= 1.1.3, < 2.0)
91
+ rspec-mocks (2.14.4)
92
+ ruby-progressbar (1.4.0)
93
+ safe_yaml (0.9.7)
94
+ sham_rack (1.3.6)
95
+ rack
96
+ sinatra (1.4.4)
97
+ rack (~> 1.4)
98
+ rack-protection (~> 1.4)
99
+ tilt (~> 1.3, >= 1.3.4)
100
+ slop (3.4.7)
101
+ thor (0.18.1)
102
+ tilt (1.4.1)
103
+ webmock (1.17.1)
104
+ addressable (>= 2.2.7)
105
+ crack (>= 0.3.2)
106
+
107
+ PLATFORMS
108
+ ruby
109
+
110
+ DEPENDENCIES
111
+ appraisal
112
+ aruba
113
+ capistrano (~> 2.0)
114
+ cucumber (~> 1.3.10)
115
+ fuubar
116
+ growl
117
+ guard (~> 1.8.3)
118
+ guard-rspec
119
+ honeybadger!
120
+ rack
121
+ rake
122
+ rspec (~> 2.14.0)
123
+ sham_rack (~> 1.3.0)
124
+ sinatra
125
+ webmock
@@ -0,0 +1,141 @@
1
+ PATH
2
+ remote: /Users/josh/code/honeybadger-ruby
3
+ specs:
4
+ honeybadger (1.13.0)
5
+ json
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ actionmailer (2.3.18)
11
+ actionpack (= 2.3.18)
12
+ actionpack (2.3.18)
13
+ activesupport (= 2.3.18)
14
+ rack (~> 1.1.0)
15
+ activerecord (2.3.18)
16
+ activesupport (= 2.3.18)
17
+ activeresource (2.3.18)
18
+ activesupport (= 2.3.18)
19
+ activesupport (2.3.18)
20
+ addressable (2.3.5)
21
+ appraisal (0.5.2)
22
+ bundler
23
+ rake
24
+ aruba (0.5.4)
25
+ childprocess (>= 0.3.6)
26
+ cucumber (>= 1.1.1)
27
+ rspec-expectations (>= 2.7.0)
28
+ backports (3.3.5)
29
+ builder (3.2.2)
30
+ capistrano (2.15.5)
31
+ highline
32
+ net-scp (>= 1.0.0)
33
+ net-sftp (>= 2.0.0)
34
+ net-ssh (>= 2.0.14)
35
+ net-ssh-gateway (>= 1.1.0)
36
+ childprocess (0.4.0)
37
+ ffi (~> 1.0, >= 1.0.11)
38
+ coderay (1.1.0)
39
+ crack (0.4.1)
40
+ safe_yaml (~> 0.9.0)
41
+ cucumber (1.3.10)
42
+ builder (>= 2.1.2)
43
+ diff-lcs (>= 1.1.3)
44
+ gherkin (~> 2.12)
45
+ multi_json (>= 1.7.5, < 2.0)
46
+ multi_test (>= 0.0.2)
47
+ diff-lcs (1.2.5)
48
+ ffi (1.9.3)
49
+ formatador (0.2.4)
50
+ fuubar (1.3.2)
51
+ rspec (>= 2.14.0, < 3.1.0)
52
+ ruby-progressbar (~> 1.3)
53
+ gherkin (2.12.2)
54
+ multi_json (~> 1.3)
55
+ growl (1.0.3)
56
+ guard (1.8.3)
57
+ formatador (>= 0.2.4)
58
+ listen (~> 1.3)
59
+ lumberjack (>= 1.0.2)
60
+ pry (>= 0.9.10)
61
+ thor (>= 0.14.6)
62
+ guard-rspec (3.1.0)
63
+ guard (>= 1.8)
64
+ rspec (~> 2.13)
65
+ highline (1.6.20)
66
+ json (1.8.1)
67
+ listen (1.3.1)
68
+ rb-fsevent (>= 0.9.3)
69
+ rb-inotify (>= 0.9)
70
+ rb-kqueue (>= 0.2)
71
+ lumberjack (1.0.4)
72
+ method_source (0.8.2)
73
+ multi_json (1.8.4)
74
+ multi_test (0.0.3)
75
+ net-scp (1.1.2)
76
+ net-ssh (>= 2.6.5)
77
+ net-sftp (2.1.2)
78
+ net-ssh (>= 2.6.5)
79
+ net-ssh (2.7.0)
80
+ net-ssh-gateway (1.2.0)
81
+ net-ssh (>= 2.6.5)
82
+ pry (0.9.12.4)
83
+ coderay (~> 1.0)
84
+ method_source (~> 0.8)
85
+ slop (~> 3.4)
86
+ rack (1.1.6)
87
+ rails (2.3.18)
88
+ actionmailer (= 2.3.18)
89
+ actionpack (= 2.3.18)
90
+ activerecord (= 2.3.18)
91
+ activeresource (= 2.3.18)
92
+ activesupport (= 2.3.18)
93
+ rake (>= 0.8.3)
94
+ rake (0.9.5)
95
+ rb-fsevent (0.9.4)
96
+ rb-inotify (0.9.3)
97
+ ffi (>= 0.5.0)
98
+ rb-kqueue (0.2.0)
99
+ ffi (>= 0.5.0)
100
+ rspec (2.14.1)
101
+ rspec-core (~> 2.14.0)
102
+ rspec-expectations (~> 2.14.0)
103
+ rspec-mocks (~> 2.14.0)
104
+ rspec-core (2.14.7)
105
+ rspec-expectations (2.14.4)
106
+ diff-lcs (>= 1.1.3, < 2.0)
107
+ rspec-mocks (2.14.4)
108
+ ruby-progressbar (1.4.0)
109
+ safe_yaml (0.9.7)
110
+ sham_rack (1.3.6)
111
+ rack
112
+ sinatra (1.2.9)
113
+ backports
114
+ rack (~> 1.1, < 1.5)
115
+ tilt (>= 1.2.2, < 2.0)
116
+ slop (3.4.7)
117
+ thor (0.18.1)
118
+ tilt (1.4.1)
119
+ webmock (1.17.1)
120
+ addressable (>= 2.2.7)
121
+ crack (>= 0.3.2)
122
+
123
+ PLATFORMS
124
+ ruby
125
+
126
+ DEPENDENCIES
127
+ appraisal
128
+ aruba
129
+ capistrano (~> 2.0)
130
+ cucumber (~> 1.3.10)
131
+ fuubar
132
+ growl
133
+ guard (~> 1.8.3)
134
+ guard-rspec
135
+ honeybadger!
136
+ rails (~> 2.3.18)
137
+ rake (= 0.9.5)
138
+ rspec (~> 2.14.0)
139
+ sham_rack (~> 1.3.0)
140
+ sinatra
141
+ webmock