can't run: rake gems:install if application.rb depends on initializers

In general a task that installs a gem shouldn't need to rely on much.

The gem tasks depend on the initializer firing up because they allow things like config.gem 'rspec' in test.rb but not development.rb. Can you reproduce this in an empty test app?

So unless I'm misreading this, it seems we're requiring application.rb before we try to run the gem installs, but we *haven't* fired the initializers yet?

Is it perhaps caused by one of your plugins (rspec f.ex) requiring application.rb?

> In general a task that installs a gem shouldn't need to rely on much.

The gem tasks depend on the initializer firing up because they allow things like config.gem 'rspec' in test.rb but not development.rb. Can you reproduce this in an empty test app?

This problem is NOT reproducible in a simple test app:

rails test2_1_1 cd rails2_1_1 echo 'MY_CONSTANT = true' > config/initializers/test2_1_1.rb

add:

  if MY_CONSTANT     puts "MY_CONSTANT exists"   end

to app/application.rb

add to end of Rails::Initializer.run do |config| block:

  config.gem "rspec-rails", :lib => "spec"

$ rake gems:install (in /Users/stephen/dev/rails/test2_1_1) MY_CONSTANT exists

$ rake gems:unpack (in /Users/stephen/dev/rails/test2_1_1) MY_CONSTANT exists Unpacked gem: '/Users/stephen/dev/rails/test2_1_1/vendor/gems/rspec-rails-1.1.8'

So unless I'm misreading this, it seems we're requiring application.rb before we try to run the gem installs, but we *haven't* fired the initializers yet?

Is it perhaps caused by one of your plugins (rspec f.ex) requiring application.rb? --

There's something different between the apps -- -- I will investigate further -- if I find anything further that might indicate a rails problem I'll update this thread.

Thanks for your response.

Stephen, did you ever figure out what caused the issue? Battling with it now and trying to find the offending piece of code loading application.rb

Best

I've seen this behavior as well: my initializers were not being run during a gem install, but application.rb was being required. Inside initializer.rb, the "gems_dependencies_loaded" test was not being met and so the "load_application_initializers" method had no effect.

In my case, the initializers were defining some constants needed for application.rb. I resorted to installing the gem manually.

-Chris

I've seen something similar, where application.rb gets required when I'm trying to run rake db:migrate.

I guess there's some plugin we're all using.

Please have a look at http://groups.google.com/group/rubyonrails-core/browse_thread/thread/73f21c47d114b88e

I managed to split this thread when changing the subject. On edge, application.rb won't be loaded by default anymore (Matt did give the details), so it's not a plugin issue at all.

Best