我正在使用 capistrano/passenger/nginx 部署我的应用程序。部署进展顺利。但是,当我尝试加载它时,应用程序崩溃了:
错误消息:未初始化常量 Object::Rails
回溯的最后一行是:
/opt/app/releases/20101208120133/system/config/environment.rb 1 in `'
这对应于以下内容:
require "#{Rails.root}/lib/formats.rb"
但是,如果我在服务器上输入 rails 控制台,它就能很好地检测到 Rails.root。我正在运行 rails 3.0.3(尽管它也不适用于 3.0.0)。
答案1
我很惊讶地看到堆栈跟踪表明environment.rb
位于system/config/
。您是否已将其符号链接到current/config/environment.rb
?
答案2
我遇到了同样的问题,我不得不使用 File.expand_path 来代替。
File.expand_path('/lib/formats.rb')
我对此的最佳猜测是,因为 environment.rb 是首先加载的内容之一,所以乘客可能在了解 Rails 对象或其他内容之前就查看了它。这没有多大意义……也许我错了 :) 但这个解决方法似乎有效。