-
-
Save celsoMartins/9b9935c07eaaa334d346 to your computer and use it in GitHub Desktop.
Stacktrace: | |
26) UserAPI /post user with no parameters with no json | |
Failure/Error: before { post '/user' } | |
NoMethodError: | |
undefined method `join' for #<String:0x007f62c3e6fb90> | |
# ./spec/routes/user_api_spec.rb:7:in `block (5 levels) in <top (required)>' | |
Gemfile: | |
source 'http://rubygems.org' | |
ruby '2.1.3' | |
gem 'sinatra', '1.4.5', :require => 'sinatra/base' | |
gem 'tilt', '1.3.4' | |
gem 'mongoid' | |
gem 'bson_ext' | |
gem 'temple', '0.4.1' | |
gem 'slim', '1.3.0' | |
gem 'rspec' | |
gem 'rack-test' | |
gem 'simplecov' | |
gem 'database_cleaner' | |
gem 'json_spec' | |
gem 'thin' | |
gem 'json' | |
The user_spec_api.rb | |
describe 'UserAPI' do | |
include Rack::Test::Methods | |
describe '/post user' do | |
context 'with no parameters' do | |
context 'with no json' do | |
before { post '/user' } | |
it { expect(last_response.status).to be 500 } | |
it { expect(last_response.errors).to include('ArgumentError') } | |
it { expect(last_response.errors).to include('We need an email to process your request.') } | |
end | |
end | |
context 'with a valid email' do | |
before { post '/user?email=foo@bar.com' } | |
it { expect(last_response.status).to be 200 } | |
it { expect(User.count).to be 1} | |
it { expect(User.last.email).to eq 'foo@bar.com'} | |
end | |
end | |
end | |
The user_api.rb | |
module Sinatra | |
module EasyBar | |
module UserAPI | |
def self.registered(app) | |
app.post '/user' do | |
raise(ArgumentError, 'We need an email to process your request.') if params['email'].blank? | |
User.create! email: params['email'] | |
end | |
end | |
end | |
end | |
end |
bundle output that started the problem.
(master)$ bundle
Fetching gem metadata from http://rubygems.org/.........
Using i18n 0.6.11
Using multi_json 1.10.1
Using activesupport 3.2.21
Using builder 3.0.4
Using activemodel 3.2.21
Using bson 1.11.1
Using bson_ext 1.11.1
Using daemons 1.1.9
Using database_cleaner 1.3.0
Using diff-lcs 1.2.5
Using docile 1.1.5
Using eventmachine 1.0.3
Using json 1.8.1
Using rspec-support 3.1.2
Using rspec-core 3.1.7
Using rspec-expectations 3.1.2
Using rspec-mocks 3.1.3
Using rspec 3.1.0
Using json_spec 1.1.4
Using moped 1.5.2
Using origin 1.1.0
Using tzinfo 0.3.42
Using mongoid 3.1.6
Installing rack 1.6.0
Using rack-protection 1.5.3
Using rack-test 0.6.2
Using simplecov-html 0.8.0
Using simplecov 0.9.1
Using tilt 1.4.1
Using sinatra 1.4.5
Using temple 0.7.3
Using slim 3.0.0
Using thin 1.6.3
Using bundler 1.7.9
Your bundle is complete!
Use bundle show [gemname]
to see where a bundled gem is installed.
The failure with rspec -b
- UserAPI /post user with no parameters with no json
Failure/Error: before { post '/user' }
NoMethodError:
undefined method `join' for #String:0x007f71290e02a8/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/show_exceptions.rb:37:in`rescue in call'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/show_exceptions.rb:21:in `call'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:180:in`call'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:2014:in `call'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in`block in call'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1788:in `synchronize'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/sinatra-1.4.5/lib/sinatra/base.rb:1478:in`call'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rack-test-0.6.2/lib/rack/mock_session.rb:30:in `request'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rack-test-0.6.2/lib/rack/test.rb:230:in`process_request'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rack-test-0.6.2/lib/rack/test.rb:66:in `post'
./spec/routes/user_api_spec.rb:7:in`block (5 levels) in <top (required)>'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example.rb:322:in `instance_exec'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example.rb:322:in`instance_exec'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:350:in `run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:427:in`block in run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:427:in `each'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:427:in`run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:500:in `run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example.rb:368:in`run_before_example'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example.rb:151:in `block in run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example.rb:329:in`with_around_example_hooks'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example.rb:149:in `run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:490:in`block in run_examples'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:486:in `map'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:486:in`run_examples'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:453:in `run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in`block in run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `map'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in`run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `block in run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in`map'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in`block in run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `map'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in`run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:111:in `block (2 levels) in run_specs'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:111:in`map'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:111:in `block in run_specs'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/reporter.rb:53:in`report'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:107:in `run_specs'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:85:in`run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in`invoke'
/home/celsoMartins/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/exe/rspec:4:in `<top (required)>'
/home/celsoMartins/.rbenv/versions/2.1.3/bin/rspec:23:in`load'
/home/celsoMartins/.rbenv/versions/2.1.3/bin/rspec:23:in `'
The answer
A more structured discussion
The problem start to happen with the update of rack from 1.5.2 to 1.6.0, and only in the context 'with no parameters'.