Rails / Passenger子URI错误

时间:2010-08-31 23:09:25

标签: ruby-on-rails ruby-on-rails-3 passenger

我正在尝试使用乘客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的不兼容性?

非常感谢任何帮助解决此错误。

2 个答案:

答案 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