[rspec-users] rspec 1.3.2, Rails 2.3.14 - plugins not loading

Jens-Christian Fischer jcfischer at gmail.com
Wed Oct 26 11:09:03 EDT 2011


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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at bla/gems/rspec-rails-1.3.4/lib/spec/rails.rb:2	from /
Users/jcf/.rvm/gems/ruby-1.8.7-p352 at global/gems/bundler-1.0.18/lib/
bundler/runtime.rb:68:in `require'	from /Users/jcf/.rvm/gems/
ruby-1.8.7-p352 at global/gems/bundler-1.0.18/lib/bundler/runtime.rb:
68:in `require'	from /Users/jcf/.rvm/gems/ruby-1.8.7-p352 at global/gems/
bundler-1.0.18/lib/bundler/runtime.rb:66:in `each'	from /Users/
jcf/.rvm/gems/ruby-1.8.7-p352 at global/gems/bundler-1.0.18/lib/bundler/
runtime.rb:66:in `require'	from /Users/jcf/.rvm/gems/ruby-1.8.7-
p352 at global/gems/bundler-1.0.18/lib/bundler/runtime.rb:55:in `each'
from /Users/jcf/.rvm/gems/ruby-1.8.7-p352 at global/gems/bundler-1.0.18/
lib/bundler/runtime.rb:55:in `require'	from /Users/jcf/.rvm/gems/
ruby-1.8.7-p352 at 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 at bla/gems/
rails-2.3.14/lib/initializer.rb:164:in `process'	from /Users/jcf/.rvm/
gems/ruby-1.8.7-p352 at bla/gems/rails-2.3.14/lib/initializer.rb:113:in
`send'	from /Users/jcf/.rvm/gems/ruby-1.8.7-p352 at 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 at bla/
gems/activesupport-2.3.14/lib/active_support/dependencies.rb:182:in
`require'	from /Users/jcf/.rvm/gems/ruby-1.8.7-p352 at bla/gems/
activesupport-2.3.14/lib/active_support/dependencies.rb:182:in
`require'	from /Users/jcf/.rvm/gems/ruby-1.8.7-p352 at 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 at bla/gems/
activesupport-2.3.14/lib/active_support/dependencies.rb:182:in
`require'	from /Users/jcf/.rvm/gems/ruby-1.8.7-p352 at 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 24 Okt., 11:57, Andrew Premdas <aprem... at gmail.com> wrote:
> On 24 October 2011 09:12, Jens-Christian Fischer <jcfisc... at gmail.com> wrote:> 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?
>
> 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
>
>
>
>
>
>
>
>
>
> > thanks
> > jc
>
> > On 21 Okt., 22:18, Lenny Marks <le... at aps.org> wrote:
> >> On Oct 21, 2011, at 11:05 AM, Andrew Premdas wrote:
>
> >> > On 21 October 2011 10:26, Matt Wynne <m... at mattwynne.net> wrote:
>
> >> >> On 18 Oct 2011, at 15:02, Jens-Christian Fischer wrote:
>
> >> >>> 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
>
> >> >> 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
>
> >> 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
>
> >> > All best
>
> >> > Andrew
>
> >> >> cheers,
> >> >> Matt
>
> >> >> --
> >> >> Freelance programmer & coach
> >> >> Author,http://pragprog.com/book/hwcuc/the-cucumber-book(withAslak Hellesøy)
> >> >> Founder,http://relishapp.com
> >> >> +44(0)7974430184 |http://twitter.com/mattwynne
>
> >> >> _______________________________________________
> >> >> rspec-users mailing list
> >> >> rspec-us... at rubyforge.org
> >> >>http://rubyforge.org/mailman/listinfo/rspec-users
>
> >> > --
> >> > ------------------------
> >> > Andrew Premdas
> >> > blog.andrew.premdas.org
> >> > _______________________________________________
> >> > rspec-users mailing list
> >> > rspec-us... at rubyforge.org
> >> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> >> _______________________________________________
> >> rspec-users mailing list
> >> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
> > _______________________________________________
> > rspec-users mailing list
> > rspec-us... at rubyforge.org
> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> --
> ------------------------
> Andrew Premdas
> blog.andrew.premdas.org
> _______________________________________________
> rspec-users mailing list
> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users


More information about the rspec-users mailing list