mercredi 21 janvier 2015

Application.initialize! fails during rake test after upgrading to Rails 3.1

So I've recently upgraded an old project from Rails 3.0/Ruby 1.8.7 to Rails 3.1/Ruby 1.9.3, a stepping stone to being fully up to date. After getting all our unit/functional tests passing, I concentrated on getting the asset pipeline sorted out. The site now appears to be functional from a preliminary overview, with all images/javascripts loading properly. However I can no longer run bundle exec rake test. Stack trace:



/home/user/.gem/ruby/1.9.3/gems/activesupport-3.1.12/lib/active_support/dependencies.rb:306:in 'rescue in depend_on': No such file to load -- /home/user/git/project_admin/project_admin/app/assets/../config/environment (LoadError)
from /home/user/.gem/ruby/1.9.3/gems/activesupport-3.1.12/lib/active_support/dependencies.rb:301:in 'depend_on'
from /home/user/.gem/ruby/1.9.3/gems/activesupport-3.1.12/lib/active_support/dependencies.rb:214:in 'require_dependency'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/engine.rb:417:in 'block (2 levels) in eager_load!'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/engine.rb:416:in 'each'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/engine.rb:416:in 'block in eager_load!'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/engine.rb:414:in 'each'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/engine.rb:414:in 'eager_load!'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/application/finisher.rb:51:in 'block in <module:Finisher>'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/initializable.rb:30:in 'instance_exec'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/initializable.rb:30:in 'run'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/initializable.rb:55:in 'block in run_initializers'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/initializable.rb:54:in 'each'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/initializable.rb:54:in 'run_initializers'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/application.rb:96:in 'initialize!'
from /home/user/.gem/ruby/1.9.3/gems/railties-3.1.12/lib/rails/railtie/configurable.rb:30:in 'method_missing'
from /home/user/git/project_admin/project_admin/config/environment.rb:17:in '<top (required)>'
from /home/user/git/project_admin/project_admin/test/test_helper.rb:5:in 'require'
from /home/user/git/project_admin/project_admin/test/test_helper.rb:5:in '<top (required)>'
from /home/user/git/project_admin/project_admin/test/integration/authorization_test.rb:1:in 'require'
from /home/user/git/project_admin/project_admin/test/integration/authorization_test.rb:1:in '<top (required)>'
from /home/user/.gem/ruby/1.9.3/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:10:in 'require'
from /home/user/.gem/ruby/1.9.3/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:10:in 'block (2 levels) in <main>'
from /home/user/.gem/ruby/1.9.3/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:9:in 'each'
from /home/user/.gem/ruby/1.9.3/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:9:in 'block in <main>'
from /home/user/.gem/ruby/1.9.3/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:4:in 'select'
from /home/user/.gem/ruby/1.9.3/gems/rake-10.4.2/lib/rake/rake_test_loader.rb:4:in '<main>'


Line 17 of the stack trace, config/environment.rb:17 is simply:



ProjectAdmin::Application.initialize!


So there are a couple things that don't make sense here. Why is environment.rb trying to load itself down the road? And, why is it using the wrong path? It appears to be using one of the asset pipeline paths, but if I try to output config.assets.paths it is not yet initialized before the call to initialize!. Of course, it could be being initialized down the road.


Part of the problem is that I had to make so many changes since my last git commit as a part of fixing the asset pipeline, including moving a massive directory from public to app/assets, so I'm unsure how to go about seeing what change broke the test suite. I've also run bundle exec rake assets:precompile, and if that caused the problem I don't know how to undo it.


Interestingly, at one point I was unable to restart the unicorn server with the same error ultimately being thrown. However at some point during troubleshooting that resolved itself, and I can currently turn the unicorn server on.


How do I go about troubleshooting this?


Aucun commentaire:

Enregistrer un commentaire