Hi there I have a weird situation. I have inherited a project in Rails 1.2.3 that has been upgraded to Rails 2.3.14 (and is running). I have installed Cucumber and Rspec to start to write features/tests for the new code that needs to be written. In my Gemfile, these Gems are loaded: group :test do gem 'rspec-rails', '~> 1.3.4', :require => 'spec/rails' gem 'rspec', '~> 1.3.2', :require => 'spec' gem "capybara", "0.3.9" gem "cucumber", "0.9.4" gem "cucumber-rails", "0.3.2" gem 'database_cleaner' end When I run the specs (bundle exec spec spec), I get error messages because the plugins of the application aren't loaded. Indeed, if I bundle the gems in "group :test, :development do ", then script/server and script/console fail to start as well because the plugins aren't loaded. Anyone seen this problem or can give me a hint of why the plugins suddenly aren't loaded (and where I should poke to find the cause)? thanks Jens-Christian
on 2011-10-21 05:59
on 2011-10-21 11:54
On 18 Oct 2011, at 15:02, Jens-Christian Fischer wrote: > gem 'rspec', '~> 1.3.2', :require => 'spec' > script/server and script/console fail to start as well because the > plugins aren't loaded. > > Anyone seen this problem or can give me a hint of why the plugins > suddenly aren't loaded (and where I should poke to find the cause)? > > thanks > Jens-Christian My guess is that, because this is an older Rails app, it doesn't use Bundler as you'd expect. In a Rails 3 app, your config/application.rb will have something like this near the top: Bundler.require(:default, Rails.env) if defined?(Bundler) That's the magic that tells Bundler to require all the plugins for the test environment when you run the tests. You'll need to stick something like that into your Rails 1 app. One other problem you'll probably hit: Capybara won't work with Rails apps that old, so you'll need to use Webrat for integration testing instead. cheers, Matt -- Freelance programmer & coach Author, http://pragprog.com/book/hwcuc/the-cucumber-book (with Aslak Hellesy) Founder, http://relishapp.com +44(0)7974430184 | http://twitter.com/mattwynne
on 2011-10-21 17:20
On 21 October 2011 10:26, Matt Wynne <matt@mattwynne.net> wrote: >> >> because the plugins of the application aren't loaded. > > My guess is that, because this is an older Rails app, it doesn't use Bundler as you'd expect. In a Rails 3 app, your config/application.rb will have something like this near the top: > > Bundler.require(:default, Rails.env) if defined?(Bundler) > > That's the magic that tells Bundler to require all the plugins for the test environment when you run the tests. You'll need to stick something like that into your Rails 1 app. > > One other problem you'll probably hit: Capybara won't work with Rails apps that old, so you'll need to use Webrat for integration testing instead. The op said the app had been upgraded to 2.3.14 which supports capybara (has rack). The Rails 2.3.12 that (for my sins) I'm currently working on has some code near the bottom of config/boot.rb to load bundler. class Rails::Boot def run load_initializer Rails::Initializer.class_eval do def load_gems @bundler_loaded ||= begin result = Bundler.require :default Bundler.require(Rails.env) unless Rails.env.test? result end end end Rails::Initializer.run(:set_load_path) end end HTH All best Andrew > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > --
on 2011-10-21 23:27
On Oct 21, 2011, at 11:05 AM, Andrew Premdas wrote: >>> loaded: >>> When I run the specs (bundle exec spec spec), I get error messages >>> Jens-Christian > capybara (has rack). The Rails 2.3.12 that (for my sins) I'm currently > @bundler_loaded ||= begin > > HTH > If Bundler is the issue, you have to have followed these instructions(probably where the snippet above came from) to get things set up with Rails 2.3 http://gembundler.com/rails23.html -lenny
on 2011-10-24 10:35
Thanks for all the hints. I'm pretty sure however, that Bundler ist NOT the issue. Both boot.rb and config/preinitializer.rb are as expected and the app itself starts fine both with script/server or script/console. However, as soon as rspec is loaded (when running the tests), then the plugins aren't loaded anymore. A wild guess is that Rspec causes the loading of plugins to fail in mysterious ways, but I don't enough of either the Rails 2.3 booting process nor the Rspec magic to pinpoint the location where I should put my finger on. Any further ideas that I could look into? thanks jc
on 2011-10-24 12:29
On 24 October 2011 09:12, Jens-Christian Fischer <jcfischer@gmail.com> wrote: > > Any further ideas that I could look into? > Its far more likely that your application is wrong than RSpec is wrong, especially with an effect that is so large. You don't really know much about your application (you stated that you've only just inherited it. Something odd is going on with bundler (you stated that in your original post. Best advice I can give is question your assumptions and assume you have made a mistake - generally when something doesn't work its usually my fault :) After that creating a new rails project with the same gemset (ideally using RVM) might help isolate the issue. Also publishing the error messages in a gist, or even publishing the whole project on Github might help. All best Andrew >> >> >>> that has been upgraded to Rails 2.3.14 (and is running). I have >> >>> gem 'database_cleaner' >> >>> suddenly aren't loaded (and where I should poke to find the cause)? >> >> One other problem you'll probably hit: Capybara won't work with Rails apps that old, so you'll need to use Webrat for integration testing instead. >> > Rails::Initializer.class_eval do >> > end >> >> >> >> > rspec-users mailing list > --
on 2011-10-26 17:18
Ok - I have created a brand new Rails 2.3.14 app, made it bundler aware (as of http://gembundler.com/rails23.html) and installed one plugin. This reproduces the problem described above. Here's the app: (it does nothing, the only change is the use of the "history" DSL keyword in application controller. History is coming from the "rails_history" plugin): https://github.com/jcfischer/rails2314_rspec_plugin If I enable rspec in Gemfile for the development environment, this is what I get: ➜ l_p_test git:(master) ✗ script/server=> Booting WEBrick=> Rails 2.3.14 application starting on http://0.0.0.0:3000NOTE: Gem.source_index is deprecated, use Specification. It will be removed on or after 2011-11-01.Gem.source_index called from /Users/jcf/.rvm/ gems/ruby-1.8.7-p352@bla/gems/rails-2.3.14/lib/rails/gem_dependency.rb: 21./Users/jcf/dev/work/LENA/l_p_test/app/controllers/ application_controller.rb:13: undefined method `history' for ApplicationController:Class (NoMethodError) from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/active_support/ dependencies.rb:406:in `load_without_new_constant_marking' from /Users/ jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/ active_support/dependencies.rb:406:in `load_file' from /Users/jcf/.rvm/ gems/ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/active_support/ dependencies.rb:547:in `new_constants_in' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/active_support/ dependencies.rb:405:in `load_file' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/active_support/ dependencies.rb:285:in `require_or_load' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/active_support/ dependencies.rb:250:in `depend_on' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@bla/gems/activesupport-2.3.14/lib/active_support/ dependencies.rb:162:in `require_dependency' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@bla/gems/rspec-rails-1.3.4/lib/spec/rails.rb:2 from / Users/jcf/.rvm/gems/ruby-1.8.7-p352@global/gems/bundler-1.0.18/lib/ bundler/runtime.rb:68:in `require' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@global/gems/bundler-1.0.18/lib/bundler/runtime.rb: 68:in `require' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@global/gems/ bundler-1.0.18/lib/bundler/runtime.rb:66:in `each' from /Users/ jcf/.rvm/gems/ruby-1.8.7-p352@global/gems/bundler-1.0.18/lib/bundler/ runtime.rb:66:in `require' from /Users/jcf/.rvm/gems/ruby-1.8.7- p352@global/gems/bundler-1.0.18/lib/bundler/runtime.rb:55:in `each' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@global/gems/bundler-1.0.18/ lib/bundler/runtime.rb:55:in `require' from /Users/jcf/.rvm/gems/ ruby-1.8.7-p352@global/gems/bundler-1.0.18/lib/bundler.rb:120:in `require' from /Users/jcf/dev/work/LENA/l_p_test/config/boot.rb:119:in `load_gems' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/ rails-2.3.14/lib/initializer.rb:164:in `process' from /Users/jcf/.rvm/ gems/ruby-1.8.7-p352@bla/gems/rails-2.3.14/lib/initializer.rb:113:in `send' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/rails-2.3.14/ lib/initializer.rb:113:in `run' from /Users/jcf/dev/work/LENA/l_p_test/ config/environment.rb:9 from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/ gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:in `require' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/ activesupport-2.3.14/lib/active_support/dependencies.rb:182:in `require' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/ activesupport-2.3.14/lib/active_support/dependencies.rb:547:in `new_constants_in' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/ activesupport-2.3.14/lib/active_support/dependencies.rb:182:in `require' from /Users/jcf/.rvm/gems/ruby-1.8.7-p352@bla/gems/ rails-2.3.14/lib/commands/server.rb:84 from script/server:3:in `require' from script/server:3 If rspec is disabled, then the server starts fine So, while I understand the "your application is wrong" approach, I think I have just successfully eliminated that possibility. cheersjc
on 2011-10-26 17:57
Ha - I think I found the problem: In my Gemfile I had: group :test, :cucumber do # , :development (till we work out why plugins don't load with rspec) gem 'rspec-rails', '~> 1.3.4' , :require => 'spec/rails' gem 'rspec', '~> 1.3.2', :require => 'spec' gem "capybara", "0.3.9" gem "cucumber", "0.9.4" gem "cucumber-rails", "0.3.2" gem 'database_cleaner' end removing the :require => ... lines seemed to fix the problem So you were right - it was all my fault ;) thanks for prodding me in the right direction. cheers jc
on 2011-10-28 21:55
On 26 October 2011 16:16, Jens-Christian Fischer <jcfischer@gmail.com> wrote: > gem "cucumber-rails", "0.3.2" > jc your welcome all best Andrew > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > --
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.