我正在尝试使用乘客2.2.15将Rails 3.0.0应用程序部署到子URI。
我相信我已对http.conf进行了正确的RailsBaseURI
更改,已将子URI符号链接到我的应用的公共目录,并将以下代码行添加到environments/production.rb
:< / p>
config.action_controller.relative_url_root = "/sub_uri"
我在rails3.0.0之前做了好几次。也就是说,该应用程序将无法启动。它失败并出现以下乘客错误:
Error Message: wrong number of arguments(1 for 0)
Exception class: ArgumentError
/usr/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_controller/railtie.rb 54 in `relative_url_root='
乘客2.2.15和rails 3.0.0之间是否存在影响子URI的不兼容性?
非常感谢任何帮助解决此错误。
答案 0 :(得分:6)
设定者已弃用,在actionpack/lib/action_controller/railtie.rb
中无处可寻。
如此处所见(actionpack/lib/action_controller/depreciated/base.rb
):
module ActionController
class Base
# Deprecated methods. Wrap them in a module so they can be overwritten by plugins
# (like the verify method.)
module DeprecatedBehavior #:nodoc:
def relative_url_root
ActiveSupport::Deprecation.warn "ActionController::Base.relative_url_root is ineffective. " <<
"Please stop using it.", caller
end
def relative_url_root=
ActiveSupport::Deprecation.warn "ActionController::Base.relative_url_root= is ineffective. " <<
"Please stop using it.", caller
end
end
end
end
在actionpack/lib/action_controller/metal/compatibility.rb
中,您可以看到它的setter是ENV
变量:
self.config.relative_url_root = ENV['RAILS_RELATIVE_URL_ROOT']
所以你需要设置ENV变量:RAILS_RELATIVE_URL_ROOT="/sub_uri"
答案 1 :(得分:0)
设置环境变量add:
SetEnv RAILS_RELATIVE_URL_ROOT /sub_uri
到apache配置的VirtualHost
部分(或类似部分),然后确保通过重新启动apache和passenger来读取它。
cd <your_rails_project>
sudo apache2ctl graceful
touch tmp/restart