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