Skip to content

Instantly share code, notes, and snippets.

@celsoMartins
Last active August 29, 2015 14:11
Show Gist options
  • Save celsoMartins/9b9935c07eaaa334d346 to your computer and use it in GitHub Desktop.
Save celsoMartins/9b9935c07eaaa334d346 to your computer and use it in GitHub Desktop.
NoMethodError: undefined method `join' for #<String:0x007f62c3e6fb90>
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
@celsoMartins
Copy link
Author

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'.

@celsoMartins
Copy link
Author

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.

@celsoMartins
Copy link
Author

The failure with rspec -b

  1. 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 `'

@celsoMartins
Copy link
Author

@celsoMartins
Copy link
Author

A more structured discussion

sinatra/sinatra#951

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment