honeybadger 1.5.0 → 1.6.0
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.
- data/Appraisals +25 -1
- data/CHANGELOG.md +47 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +7 -8
- data/MIT-LICENSE +1 -1
- data/README.md +117 -6
- data/Rakefile +15 -0
- data/features/rack.feature +2 -2
- data/features/rails.feature +79 -15
- data/features/step_definitions/metal_steps.rb +4 -4
- data/features/step_definitions/rack_steps.rb +0 -4
- data/features/step_definitions/rails_steps.rb +49 -32
- data/features/support/honeybadger_failure_shim.rb.template +5 -0
- data/features/support/rails.rb +17 -5
- data/gemfiles/rack.gemfile +8 -0
- data/gemfiles/rack.gemfile.lock +92 -0
- data/gemfiles/rails2.3.gemfile +1 -1
- data/gemfiles/rails2.3.gemfile.lock +6 -2
- data/gemfiles/rails3.0.gemfile +2 -1
- data/gemfiles/rails3.0.gemfile.lock +12 -3
- data/gemfiles/rails3.1.gemfile +2 -1
- data/gemfiles/rails3.1.gemfile.lock +12 -3
- data/gemfiles/rails3.2.gemfile +3 -2
- data/gemfiles/rails3.2.gemfile.lock +45 -36
- data/gemfiles/rails4.gemfile +9 -0
- data/gemfiles/rails4.gemfile.lock +174 -0
- data/gemfiles/rake.gemfile +8 -0
- data/gemfiles/rake.gemfile.lock +91 -0
- data/gemfiles/sinatra.gemfile +8 -0
- data/gemfiles/sinatra.gemfile.lock +91 -0
- data/generators/honeybadger/honeybadger_generator.rb +5 -5
- data/honeybadger.gemspec +12 -3
- data/lib/honeybadger.rb +7 -14
- data/lib/honeybadger/configuration.rb +10 -1
- data/lib/honeybadger/notice.rb +38 -20
- data/lib/honeybadger/rack.rb +0 -1
- data/lib/honeybadger/rails/controller_methods.rb +5 -4
- data/lib/honeybadger/rails3_tasks.rb +16 -4
- data/lib/honeybadger/sender.rb +10 -19
- data/lib/honeybadger/shared_tasks.rb +2 -3
- data/lib/honeybadger/tasks.rb +16 -9
- data/lib/honeybadger_tasks.rb +2 -3
- data/lib/rails/generators/honeybadger/honeybadger_generator.rb +5 -5
- data/test/test_helper.rb +2 -7
- data/test/unit/backtrace_test.rb +19 -19
- data/test/unit/configuration_test.rb +11 -5
- data/test/unit/notice_test.rb +21 -3
- data/test/unit/rails/action_controller_catcher_test.rb +250 -241
- data/test/unit/sender_test.rb +22 -2
- metadata +13 -19
@@ -1,22 +1,22 @@
|
|
1
1
|
When /^I define a Metal endpoint called "([^\"]*)":$/ do |class_name, definition|
|
2
2
|
FileUtils.mkdir_p(File.join(rails_root, 'app', 'metal'))
|
3
|
-
file_name = File.join(rails_root, 'app', 'metal', "#{class_name.
|
3
|
+
file_name = File.join(rails_root, 'app', 'metal', "#{class_name.split(/(?=[A-Z][a-z]*)/).join('_').downcase}.rb")
|
4
4
|
File.open(file_name, "w") do |file|
|
5
5
|
file.puts "class #{class_name}"
|
6
6
|
file.puts definition
|
7
7
|
file.puts "end"
|
8
8
|
end
|
9
|
-
step %(the metal endpoint "#{class_name}" is mounted in the Rails 3 routes.rb)
|
9
|
+
step %(the metal endpoint "#{class_name}" is mounted in the Rails 3 routes.rb) unless rails2?
|
10
10
|
end
|
11
11
|
|
12
12
|
When /^the metal endpoint "([^\"]*)" is mounted in the Rails 3 routes.rb$/ do |class_name|
|
13
13
|
routesrb = File.join(rails_root, "config", "routes.rb")
|
14
14
|
routes = IO.readlines(routesrb)
|
15
|
-
rack_route = "
|
15
|
+
rack_route = "get '/metal(/*other)' => #{class_name}"
|
16
16
|
routes = routes[0..-2] + [rack_route, routes[-1]]
|
17
17
|
File.open(routesrb, "w") do |f|
|
18
18
|
f.puts "$:<< '#{LOCAL_RAILS_ROOT}'"
|
19
|
-
f.puts "require 'app/metal/#{class_name.
|
19
|
+
f.puts "require 'app/metal/#{class_name.split(/(?=[A-Z][a-z]*)/).join('_').downcase}'"
|
20
20
|
routes.each do |route_line|
|
21
21
|
f.puts route_line
|
22
22
|
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
require 'uri'
|
2
|
-
require 'active_support/core_ext'
|
3
2
|
|
4
3
|
When /^I generate a new Rails application$/ do
|
5
|
-
rails_create_command =
|
4
|
+
rails_create_command = rails2? ? 'rails rails_root' :
|
6
5
|
'rails new rails_root -O -S -G -J -T --skip-gemfile --skip-bundle'
|
7
6
|
|
8
7
|
step %(I successfully run `bundle exec #{rails_create_command}`)
|
@@ -12,14 +11,14 @@ When /^I generate a new Rails application$/ do
|
|
12
11
|
|
13
12
|
monkeypatch_old_version if rails_version == "2.3.14"
|
14
13
|
|
15
|
-
|
14
|
+
if rails2?
|
16
15
|
config_gem_dependencies
|
17
16
|
disable_activerecord
|
18
17
|
end
|
19
18
|
end
|
20
19
|
|
21
|
-
When /^I configure the Honeybadger shim$/ do
|
22
|
-
shim_file = File.join(PROJECT_ROOT, 'features', 'support', '
|
20
|
+
When /^I configure the Honeybadger (failure )?shim$/ do |failure|
|
21
|
+
shim_file = File.join(PROJECT_ROOT, 'features', 'support', "honeybadger#{failure ? '_failure' : nil}_shim.rb.template")
|
23
22
|
if rails_supports_initializers?
|
24
23
|
target = File.join(rails_root, 'config', 'initializers', 'honeybadger_shim.rb')
|
25
24
|
FileUtils.cp(shim_file, target)
|
@@ -32,7 +31,7 @@ When /^I configure the Honeybadger shim$/ do
|
|
32
31
|
end
|
33
32
|
|
34
33
|
When /^I configure my application to require Honeybadger$/ do
|
35
|
-
if
|
34
|
+
if rails_uses_bundler?
|
36
35
|
# Do nothing - bundler's on it
|
37
36
|
elsif rails_manages_gems?
|
38
37
|
config_gem('honeybadger')
|
@@ -50,10 +49,10 @@ When /^I configure my application to require Honeybadger$/ do
|
|
50
49
|
end
|
51
50
|
|
52
51
|
When /^I configure Honeybadger with:$/ do |config|
|
53
|
-
if rails_manages_gems?
|
54
|
-
|
52
|
+
requires = if rails_uses_bundler? || rails_manages_gems?
|
53
|
+
''
|
55
54
|
else
|
56
|
-
|
55
|
+
%(require 'honeybadger')
|
57
56
|
end
|
58
57
|
|
59
58
|
initializer_code = <<-EOF
|
@@ -74,10 +73,10 @@ When /^I configure Honeybadger with:$/ do |config|
|
|
74
73
|
end
|
75
74
|
|
76
75
|
When /^I run the honeybadger generator with "([^\"]*)"$/ do |generator_args|
|
77
|
-
if
|
78
|
-
step %(I successfully run `./script/rails generate honeybadger #{generator_args}`)
|
79
|
-
else
|
76
|
+
if rails2?
|
80
77
|
step %(I successfully run `./script/generate honeybadger #{generator_args}`)
|
78
|
+
else
|
79
|
+
step %(I successfully run `rails generate honeybadger #{generator_args}`)
|
81
80
|
end
|
82
81
|
end
|
83
82
|
|
@@ -92,7 +91,7 @@ Then /^I should receive (.+) Honeybadger notifications?$/ do |number|
|
|
92
91
|
end
|
93
92
|
|
94
93
|
Then /^the request\s?(url|component|action|params|session|cgi_data|context)? should( not)? contain "([^\"]*)"$/ do |key, negate, expected|
|
95
|
-
notice = all_output.match(/Notice: ({
|
94
|
+
notice = all_output.match(/Notice: (\{.+\})/) ? JSON.parse(Regexp.last_match(1)) : {}
|
96
95
|
hash = key ? notice['request'][key.strip] : notice['request']
|
97
96
|
hash.to_s.send(negate ? :should_not : :should, match(/#{Regexp.escape(expected)}/))
|
98
97
|
end
|
@@ -103,10 +102,10 @@ end
|
|
103
102
|
|
104
103
|
When /^I define a( metal)? response for "([^\"]*)":$/ do |metal, controller_and_action, definition|
|
105
104
|
controller_class_name, action = controller_and_action.split('#')
|
106
|
-
controller_name = controller_class_name.
|
105
|
+
controller_name = controller_class_name.split(/(?=[A-Z][a-z]*)/).join('_').downcase
|
107
106
|
controller_file_name = File.join(rails_root, 'app', 'controllers', "#{controller_name}.rb")
|
108
107
|
File.open(controller_file_name, "w") do |file|
|
109
|
-
file.puts "class #{controller_class_name} < #{ (metal &&
|
108
|
+
file.puts "class #{controller_class_name} < #{ (metal && !rails2?) ? 'ActionController::Metal' : 'ApplicationController'}"
|
110
109
|
file.puts "def consider_all_requests_local; false; end"
|
111
110
|
file.puts "def local_request?; false; end"
|
112
111
|
file.puts "def #{action}"
|
@@ -121,11 +120,11 @@ When /^I perform a request to "([^\"]*)"$/ do |uri|
|
|
121
120
|
end
|
122
121
|
|
123
122
|
When /^I route "([^\"]*)" to "([^\"]*)"$/ do |path, controller_action_pair|
|
124
|
-
route = if
|
125
|
-
%(match "#{path}", :to => "#{controller_action_pair}")
|
126
|
-
else
|
123
|
+
route = if rails2?
|
127
124
|
controller, action = controller_action_pair.split('#')
|
128
125
|
%(map.connect "#{path}", :controller => "#{controller}", :action => "#{action}")
|
126
|
+
else
|
127
|
+
%(get "#{path}" => "#{controller_action_pair}")
|
129
128
|
end
|
130
129
|
routes_file = File.join(rails_root, "config", "routes.rb")
|
131
130
|
File.open(routes_file, "r+") do |file|
|
@@ -182,20 +181,7 @@ Then /^my Honeybadger configuration should contain the following line:$/ do |lin
|
|
182
181
|
end
|
183
182
|
|
184
183
|
When /^I configure the application to filter parameter "([^\"]*)"$/ do |parameter|
|
185
|
-
if
|
186
|
-
application_filename = File.join(rails_root, 'config', 'application.rb')
|
187
|
-
application_lines = File.open(application_filename).readlines
|
188
|
-
|
189
|
-
application_definition_line = application_lines.detect { |line| line =~ /Application/ }
|
190
|
-
application_definition_line_index = application_lines.index(application_definition_line)
|
191
|
-
|
192
|
-
application_lines.insert(application_definition_line_index + 1,
|
193
|
-
" config.filter_parameters += [#{parameter.inspect}]")
|
194
|
-
|
195
|
-
File.open(application_filename, "w") do |file|
|
196
|
-
file.puts application_lines.join("\n")
|
197
|
-
end
|
198
|
-
else
|
184
|
+
if rails2?
|
199
185
|
controller_filename = application_controller_filename
|
200
186
|
controller_lines = File.open(controller_filename).readlines
|
201
187
|
|
@@ -208,6 +194,19 @@ When /^I configure the application to filter parameter "([^\"]*)"$/ do |paramete
|
|
208
194
|
File.open(controller_filename, "w") do |file|
|
209
195
|
file.puts controller_lines.join("\n")
|
210
196
|
end
|
197
|
+
else
|
198
|
+
application_filename = File.join(rails_root, 'config', 'application.rb')
|
199
|
+
application_lines = File.open(application_filename).readlines
|
200
|
+
|
201
|
+
application_definition_line = application_lines.detect { |line| line =~ /Application/ }
|
202
|
+
application_definition_line_index = application_lines.index(application_definition_line)
|
203
|
+
|
204
|
+
application_lines.insert(application_definition_line_index + 1,
|
205
|
+
" config.filter_parameters += [#{parameter.inspect}]")
|
206
|
+
|
207
|
+
File.open(application_filename, "w") do |file|
|
208
|
+
file.puts application_lines.join("\n")
|
209
|
+
end
|
211
210
|
end
|
212
211
|
end
|
213
212
|
|
@@ -223,3 +222,21 @@ When /^I configure the notifier to use "([^\"]*)" as an API key$/ do |api_key|
|
|
223
222
|
"""
|
224
223
|
}
|
225
224
|
end
|
225
|
+
|
226
|
+
When /^I configure Rails with:$/ do |config|
|
227
|
+
if rails2?
|
228
|
+
fail 'This step definition requires Rails 3+. Please add support for Rails 2 if you need it.'
|
229
|
+
else
|
230
|
+
application_filename = File.join(rails_root, 'config', 'application.rb')
|
231
|
+
application_lines = File.open(application_filename).readlines
|
232
|
+
|
233
|
+
application_definition_line = application_lines.detect { |line| line =~ /Application/ }
|
234
|
+
application_definition_line_index = application_lines.index(application_definition_line)
|
235
|
+
|
236
|
+
application_lines.insert(application_definition_line_index + 1, config)
|
237
|
+
|
238
|
+
File.open(application_filename, "w") do |file|
|
239
|
+
file.puts application_lines.join("\n")
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
data/features/support/rails.rb
CHANGED
@@ -3,32 +3,44 @@ module RailsHelpers
|
|
3
3
|
controller_filename = File.join(rails_root, 'app', 'controllers', "application_controller.rb")
|
4
4
|
end
|
5
5
|
|
6
|
+
def rails2?
|
7
|
+
rails_version =~ /^2/
|
8
|
+
end
|
9
|
+
|
6
10
|
def rails3?
|
7
11
|
rails_version =~ /^3/
|
8
12
|
end
|
9
13
|
|
14
|
+
def rails4?
|
15
|
+
rails_version =~ /^4/
|
16
|
+
end
|
17
|
+
|
10
18
|
def rails_root
|
11
19
|
LOCAL_RAILS_ROOT
|
12
20
|
end
|
13
21
|
|
14
22
|
def rails_uses_rack?
|
15
|
-
rails3? || rails_version =~ /^2\.3/
|
23
|
+
rails4? || rails3? || rails_version =~ /^2\.3/
|
16
24
|
end
|
17
25
|
|
18
26
|
def rails_version
|
19
27
|
@rails_version ||= `bundle exec rails -v`[/\d.+/]
|
20
28
|
end
|
21
29
|
|
30
|
+
def rails_uses_bundler?
|
31
|
+
rails4? || rails3?
|
32
|
+
end
|
33
|
+
|
22
34
|
def rails_manages_gems?
|
23
35
|
rails_version =~ /^2\.[123]/
|
24
36
|
end
|
25
37
|
|
26
38
|
def rails_supports_initializers?
|
27
|
-
rails3? || rails_version =~ /^2\./
|
39
|
+
rails4? || rails3? || rails_version =~ /^2\./
|
28
40
|
end
|
29
41
|
|
30
42
|
def rails_finds_generators_in_gems?
|
31
|
-
rails3? || rails_version =~ /^2\./
|
43
|
+
rails4? || rails3? || rails_version =~ /^2\./
|
32
44
|
end
|
33
45
|
|
34
46
|
def environment_path
|
@@ -72,7 +84,7 @@ module RailsHelpers
|
|
72
84
|
end
|
73
85
|
|
74
86
|
def perform_request(uri, environment = 'production')
|
75
|
-
if rails3?
|
87
|
+
if rails4? || rails3?
|
76
88
|
request_script = <<-SCRIPT
|
77
89
|
require File.expand_path('../config/environment', __FILE__)
|
78
90
|
|
@@ -91,7 +103,7 @@ module RailsHelpers
|
|
91
103
|
end
|
92
104
|
SCRIPT
|
93
105
|
File.open(File.join(rails_root, 'request.rb'), 'w') { |file| file.write(request_script) }
|
94
|
-
step %(I run `
|
106
|
+
step %(I run `rails runner -e #{environment} request.rb`)
|
95
107
|
elsif rails_uses_rack?
|
96
108
|
request_script = <<-SCRIPT
|
97
109
|
require File.expand_path('../config/environment', __FILE__)
|
@@ -0,0 +1,92 @@
|
|
1
|
+
PATH
|
2
|
+
remote: /Users/josh/code/honeybadger-ruby
|
3
|
+
specs:
|
4
|
+
honeybadger (1.5.0)
|
5
|
+
json
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
appraisal (0.5.1)
|
11
|
+
bundler
|
12
|
+
rake
|
13
|
+
aruba (0.5.1)
|
14
|
+
childprocess (~> 0.3.6)
|
15
|
+
cucumber (>= 1.1.1)
|
16
|
+
rspec-expectations (>= 2.7.0)
|
17
|
+
bourne (1.3.0)
|
18
|
+
mocha (= 0.13.0)
|
19
|
+
builder (3.1.4)
|
20
|
+
capistrano (2.14.1)
|
21
|
+
highline
|
22
|
+
net-scp (>= 1.0.0)
|
23
|
+
net-sftp (>= 2.0.0)
|
24
|
+
net-ssh (>= 2.0.14)
|
25
|
+
net-ssh-gateway (>= 1.1.0)
|
26
|
+
childprocess (0.3.6)
|
27
|
+
ffi (~> 1.0, >= 1.0.6)
|
28
|
+
cucumber (1.2.1)
|
29
|
+
builder (>= 2.1.2)
|
30
|
+
diff-lcs (>= 1.1.3)
|
31
|
+
gherkin (~> 2.11.0)
|
32
|
+
json (>= 1.4.6)
|
33
|
+
diff-lcs (1.1.3)
|
34
|
+
fakeweb (1.3.0)
|
35
|
+
ffi (1.3.1)
|
36
|
+
ffi (1.3.1-java)
|
37
|
+
gherkin (2.11.5)
|
38
|
+
json (>= 1.4.6)
|
39
|
+
gherkin (2.11.5-java)
|
40
|
+
json (>= 1.4.6)
|
41
|
+
highline (1.6.15)
|
42
|
+
json (1.7.6)
|
43
|
+
json (1.7.6-java)
|
44
|
+
metaclass (0.0.1)
|
45
|
+
mocha (0.13.0)
|
46
|
+
metaclass (~> 0.0.1)
|
47
|
+
net-scp (1.0.4)
|
48
|
+
net-ssh (>= 1.99.1)
|
49
|
+
net-sftp (2.0.5)
|
50
|
+
net-ssh (>= 2.0.9)
|
51
|
+
net-ssh (2.6.3)
|
52
|
+
net-ssh-gateway (1.1.0)
|
53
|
+
net-ssh (>= 1.99.1)
|
54
|
+
rack (1.4.4)
|
55
|
+
rack-protection (1.3.2)
|
56
|
+
rack
|
57
|
+
rake (10.0.3)
|
58
|
+
rspec (2.12.0)
|
59
|
+
rspec-core (~> 2.12.0)
|
60
|
+
rspec-expectations (~> 2.12.0)
|
61
|
+
rspec-mocks (~> 2.12.0)
|
62
|
+
rspec-core (2.12.2)
|
63
|
+
rspec-expectations (2.12.1)
|
64
|
+
diff-lcs (~> 1.1.3)
|
65
|
+
rspec-mocks (2.12.1)
|
66
|
+
sham_rack (1.3.4)
|
67
|
+
rack
|
68
|
+
shoulda (2.11.3)
|
69
|
+
sinatra (1.3.3)
|
70
|
+
rack (~> 1.3, >= 1.3.6)
|
71
|
+
rack-protection (~> 1.2)
|
72
|
+
tilt (~> 1.3, >= 1.3.3)
|
73
|
+
tilt (1.3.3)
|
74
|
+
|
75
|
+
PLATFORMS
|
76
|
+
java
|
77
|
+
ruby
|
78
|
+
|
79
|
+
DEPENDENCIES
|
80
|
+
appraisal
|
81
|
+
aruba
|
82
|
+
bourne (>= 1.0)
|
83
|
+
capistrano
|
84
|
+
cucumber (~> 1.2.1)
|
85
|
+
fakeweb (~> 1.3.0)
|
86
|
+
honeybadger!
|
87
|
+
rack
|
88
|
+
rake
|
89
|
+
rspec (~> 2.12.0)
|
90
|
+
sham_rack (~> 1.3.0)
|
91
|
+
shoulda (~> 2.11.3)
|
92
|
+
sinatra
|
data/gemfiles/rails2.3.gemfile
CHANGED
@@ -2,11 +2,10 @@ PATH
|
|
2
2
|
remote: /Users/josh/code/honeybadger-ruby
|
3
3
|
specs:
|
4
4
|
honeybadger (1.5.0)
|
5
|
-
activesupport
|
6
5
|
json
|
7
6
|
|
8
7
|
GEM
|
9
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
10
9
|
specs:
|
11
10
|
actionmailer (2.3.14)
|
12
11
|
actionpack (= 2.3.14)
|
@@ -44,10 +43,14 @@ GEM
|
|
44
43
|
diff-lcs (1.1.3)
|
45
44
|
fakeweb (1.3.0)
|
46
45
|
ffi (1.2.0)
|
46
|
+
ffi (1.2.0-java)
|
47
47
|
gherkin (2.11.5)
|
48
48
|
json (>= 1.4.6)
|
49
|
+
gherkin (2.11.5-java)
|
50
|
+
json (>= 1.4.6)
|
49
51
|
highline (1.6.15)
|
50
52
|
json (1.7.5)
|
53
|
+
json (1.7.5-java)
|
51
54
|
metaclass (0.0.1)
|
52
55
|
mocha (0.10.5)
|
53
56
|
metaclass (~> 0.0.1)
|
@@ -84,6 +87,7 @@ GEM
|
|
84
87
|
tilt (1.3.3)
|
85
88
|
|
86
89
|
PLATFORMS
|
90
|
+
java
|
87
91
|
ruby
|
88
92
|
|
89
93
|
DEPENDENCIES
|
data/gemfiles/rails3.0.gemfile
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: /Users/josh/code/honeybadger-ruby
|
3
3
|
specs:
|
4
|
-
honeybadger (1.
|
5
|
-
activesupport
|
4
|
+
honeybadger (1.5.0)
|
6
5
|
json
|
7
6
|
|
8
7
|
GEM
|
9
|
-
remote:
|
8
|
+
remote: https://rubygems.org/
|
10
9
|
specs:
|
11
10
|
abstract (1.0.0)
|
12
11
|
actionmailer (3.0.17)
|
@@ -43,6 +42,9 @@ GEM
|
|
43
42
|
childprocess (~> 0.3.6)
|
44
43
|
cucumber (>= 1.1.1)
|
45
44
|
rspec-expectations (>= 2.7.0)
|
45
|
+
better_errors (0.5.0)
|
46
|
+
coderay (>= 1.0.0)
|
47
|
+
erubis (>= 2.6.6)
|
46
48
|
bourne (1.1.2)
|
47
49
|
mocha (= 0.10.5)
|
48
50
|
builder (2.1.2)
|
@@ -54,6 +56,7 @@ GEM
|
|
54
56
|
net-ssh-gateway (>= 1.1.0)
|
55
57
|
childprocess (0.3.6)
|
56
58
|
ffi (~> 1.0, >= 1.0.6)
|
59
|
+
coderay (1.0.8)
|
57
60
|
cucumber (1.2.1)
|
58
61
|
builder (>= 2.1.2)
|
59
62
|
diff-lcs (>= 1.1.3)
|
@@ -64,11 +67,15 @@ GEM
|
|
64
67
|
abstract (>= 1.0.0)
|
65
68
|
fakeweb (1.3.0)
|
66
69
|
ffi (1.2.0)
|
70
|
+
ffi (1.2.0-java)
|
67
71
|
gherkin (2.11.5)
|
68
72
|
json (>= 1.4.6)
|
73
|
+
gherkin (2.11.5-java)
|
74
|
+
json (>= 1.4.6)
|
69
75
|
highline (1.6.15)
|
70
76
|
i18n (0.5.0)
|
71
77
|
json (1.7.5)
|
78
|
+
json (1.7.5-java)
|
72
79
|
mail (2.2.19)
|
73
80
|
activesupport (>= 2.3.6)
|
74
81
|
i18n (>= 0.4.0)
|
@@ -128,11 +135,13 @@ GEM
|
|
128
135
|
tzinfo (0.3.35)
|
129
136
|
|
130
137
|
PLATFORMS
|
138
|
+
java
|
131
139
|
ruby
|
132
140
|
|
133
141
|
DEPENDENCIES
|
134
142
|
appraisal
|
135
143
|
aruba
|
144
|
+
better_errors
|
136
145
|
bourne (>= 1.0)
|
137
146
|
capistrano
|
138
147
|
cucumber (~> 1.2.1)
|