2

我有一个使用rails + unicorn + nginxcapistrano部署的应用程序。

一切正常,直到昨天我运行了捆绑更新。由于缺少方法,独角兽服务器突然无法启动:generated_attribute_methods

在开发中我可以很好地启动和使用服务器,但在生产中它给了我这个错误

这是从我的使用 rvm(生产)的机器开始的服务器的输出:

I, [2013-05-14T10:05:59.070825 #52560]  INFO -- : Refreshing Gem list
/Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/dynamic_matchers.rb:55:in `method_missing': undefined local variable or method `generated_attribute_methods' for #<Class:0x007fe254b1fe98> (NameError)
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/base.rb:405:in `initialize_generated_modules'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/base.rb:397:in `inherited'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/session_store.rb:79:in `<class:SessionStore>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/session_store.rb:53:in `<module:ActiveRecord>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/activerecord-3.2.13/lib/active_record/session_store.rb:3:in `<top (required)>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/application/configuration.rb:138:in `session_store'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/application.rb:273:in `block in default_middleware_stack'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/application.rb:237:in `tap'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/application.rb:237:in `default_middleware_stack'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/engine.rb:469:in `app'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/application/finisher.rb:31:in `block in <module:Finisher>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `instance_exec'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `run'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `each'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `run_initializers'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/application.rb:136:in `initialize!'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /Users/nicoskaralis/Documents/WayTaxi/webapp/config/environment.rb:5:in `<top (required)>'
    from config.ru:4:in `require'
    from config.ru:4:in `block in <main>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
    from config.ru:1:in `new'
    from config.ru:1:in `<main>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/unicorn-4.6.2/lib/unicorn.rb:44:in `eval'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/unicorn-4.6.2/lib/unicorn.rb:44:in `block in builder'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:722:in `call'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:722:in `build_app!'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:140:in `start'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/gems/unicorn-4.6.2/bin/unicorn:126:in `<top (required)>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/bin/unicorn:19:in `load'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/bin/unicorn:19:in `<main>'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/bin/ruby_noexec_wrapper:14:in `eval'
    from /Users/nicoskaralis/.rvm/gems/ruby-1.9.3-p392/bin/ruby_noexec_wrapper:14:in `<main>'

这是从我的服务器开始的服务器的输出,使用 rbenv(生产):

I, [2013-05-14T10:14:14.599183 #25840]  INFO -- : Refreshing Gem list
/home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/dynamic_matchers.rb:55:in `method_missing': undefined local variable or method `generated_attribute_methods' for #<Class:0x0000000204fe50> (NameError)
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/base.rb:405:in `initialize_generated_modules'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/base.rb:397:in `inherited'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:79:in `<class:SessionStore>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:53:in `<module:ActiveRecord>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.13/lib/active_record/session_store.rb:3:in `<top (required)>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application/configuration.rb:138:in `session_store'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:273:in `block in default_middleware_stack'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:237:in `tap'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:237:in `default_middleware_stack'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/engine.rb:469:in `app'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application/finisher.rb:31:in `block in <module:Finisher>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `instance_exec'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:30:in `run'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:55:in `block in run_initializers'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `each'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/initializable.rb:54:in `run_initializers'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:136:in `initialize!'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /home/deployer/rails_apps/webapp/releases/20130514130605/config/environment.rb:5:in `<top (required)>'
    from config.ru:4:in `require'
    from config.ru:4:in `block in <main>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
    from config.ru:1:in `new'
    from config.ru:1:in `<main>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn.rb:44:in `eval'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn.rb:44:in `block in builder'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:722:in `call'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:722:in `build_app!'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.2/lib/unicorn/http_server.rb:140:in `start'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/gems/unicorn-4.6.2/bin/unicorn:126:in `<top (required)>'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/bin/unicorn:23:in `load'
    from /home/deployer/rails_apps/webapp/shared/bundle/ruby/1.9.1/bin/unicorn:23:in `<main>'

这很奇怪,因为我在 capistrano 中设置了使用 ruby​​ 1.9.3-p392,但是因为是 ubuntu 并且它正在工作,所以我不明白这可能是什么问题

这里有什么问题?我应该怎么办?

编辑

根据需要config.ru

# This file is used by Rack-based servers to start the application.

require ::File.expand_path('../config/environment',  __FILE__)
run Webapp::Application

编辑 2

我用来启动服务器的命令基本上是这样的:

bundle exec unicorn -p 3000 -c ./config/unicorn.rb -E production

如果我改为

bundle exec unicorn_rails -l 0.0.0.0:3000 -E production

它可以工作,但我没有将我的配置放在服务器中,此外,我读到unicorn_rails不应该再使用

编辑 3

显然我的问题在里面Webapp::Application.initialize!

puts "before" # => prints
Webapp::Application.initialize!
puts "after" # => don't prints

编辑 4 15/05

我在其他机器和我的服务器(ubuntu 10.04)和我的机器(mac os x)上进行测试,它没有启动服务器,给出了那个错误。但是在我的同事机器(ubuntu 12.04)上它工作正常。

经过一些测试后,我决定清理我的开发代码并从 git 下载最新版本。现在有时它工作正常,有时它给出错误。

会是什么呢?

编辑 5

显然这是因为 new relic + unicorn,评论这行:

if defined? Unicorn
  ::NewRelic::Agent.manual_start()
  ::NewRelic::Agent.after_fork(:force_reconnect => true)
end

让一切正常工作

4

0 回答 0