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

Andrew Premdas apremdas at gmail.com
Fri Oct 21 11:05:19 EDT 2011


On 21 October 2011 10:26, Matt Wynne <matt 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


All best

Andrew

>
> cheers,
> Matt
>
> --
> Freelance programmer & coach
> Author, http://pragprog.com/book/hwcuc/the-cucumber-book (with Aslak Hellesøy)
> Founder, http://relishapp.com
> +44(0)7974430184 | http://twitter.com/mattwynne
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>



-- 
------------------------
Andrew Premdas
blog.andrew.premdas.org


More information about the rspec-users mailing list