我正在尝试将Rails 4.0项目从PostgreSQL转换为MySQL。
我在本地Vagrant虚拟机中所有的东西都在工作,但在我执行cap deploy
之后,这就是我在生产服务器上的日志中看到的:
I, [2015-03-25T15:39:12.558662 #28566] INFO -- : Refreshing Gem list
[snip]/shared/bundle/ruby/2.2.0/gems/activesupport-4.0.13/lib/active_support/deprecation.rb:1:in `require': cannot load such file -- singleton (LoadError)
from [snip]/shared/bundle/ruby/2.2.0/gems/activesupport-4.0.13/lib/active_support/deprecation.rb:1:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/configuration.rb:1:in `require'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/configuration.rb:1:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/railtie.rb:2:in `require'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/railtie.rb:2:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/engine.rb:1:in `require'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/engine.rb:1:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/application.rb:4:in `require'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/application.rb:4:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails.rb:9:in `require'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails.rb:9:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/all.rb:1:in `require'
from [snip]/shared/bundle/ruby/2.2.0/gems/railties-4.0.13/lib/rails/all.rb:1:in `<top (required)>'
from [snip]/releases/20150325221423/config/application.rb:3:in `require'
from [snip]/releases/20150325221423/config/application.rb:3:in `<top (required)>'
from [snip]/releases/20150325221423/config/environment.rb:2:in `require'
from [snip]/releases/20150325221423/config/environment.rb:2:in `<top (required)>'
from config.ru:4:in `require'
from config.ru:4:in `block in <main>'
from [snip]/shared/bundle/ruby/2.2.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
from [snip]/shared/bundle/ruby/2.2.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
from config.ru:1:in `new'
from config.ru:1:in `<main>'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn.rb:48:in `eval'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn.rb:48:in `block in builder'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:764:in `call'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:764:in `build_app!'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:628:in `init_worker_process'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:651:in `worker_loop'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:525:in `spawn_missing_workers'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:536:in `maintain_worker_count'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:294:in `join'
from [snip]/shared/bundle/ruby/2.2.0/gems/unicorn-4.8.3/bin/unicorn:126:in `<top (required)>'
from [snip]/shared/bundle/ruby/2.2.0/bin/unicorn:23:in `load'
from [snip]/shared/bundle/ruby/2.2.0/bin/unicorn:23:in `<main>'
E, [2015-03-25T15:39:12.723362 #1450] ERROR -- : reaped #<Process::Status: pid 28563 exit 1> worker=0
但我的理解是singleton
是Ruby的一个特性,而不是我可能缺少的某个第三方库。这是正确的吗?这里有什么问题?
编辑:我正在将Chef添加到此项目中。在将生产配置应用到实际的生产服务器之前,我已经设置了第二个Vagrant VM来测试它。我已经将这个虚拟机配置为与生产服务器匹配,尽我所能,但虚拟机运行良好。
我完成了向项目中添加Chef,现在使用它来配置生产服务器。大约在同一时间,我还升级到了Rails 4.2。
我不再收到这个错误,所以这可能是解决问题的两件事之一。