1

我正在尝试使用 Warbler 生成的 war 文件将 Rails 应用程序部署到 Tomcat。战争文件部署到 /myproject-rails-gui 没有任何问题,但是,当我尝试访问应用程序上的页面时,我得到:

ArgumentError: wrong number of arguments (1 for 0)
          send at org/jruby/RubyKernel.java:2097
       Railtie at /home/myproject/apache-tomcat-7.0.22/webapps/myproject-rails-gui/WEB-INF/gems/gems/actionpack-3.0.10/lib/action_controller/railtie.rb:54

尝试设置 relative_url_root 时失败。还有其他 Stack Overflow 文章(正确地)指出 relative_url_root 已被弃用,您应该设置 RAILS_RELATIVE_URL_ROOT 环境变量。

来自GitHub 上的 Rails 项目

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

不过,我没有任何运气弄清楚如何使用 Warbler 和 Tomcat 做到这一点。有什么建议么?值得一提的是,当我在根上下文中运行该应用程序时,它运行良好。

我的环境:

  • 莺1.3.2
  • 雄猫 7.0.22
  • JRuby 1.6.5
  • 导轨 3.0.10
4

1 回答 1

0

经过大量挖掘,看起来这个特殊的异常是由Rails v3.0.10中的ActionController::DeprecatedBehavior.relative_url_root=中缺少参数引起的。Miguel,您的问题可能是相关的,但是,如果您在 Rails v3.1.1 中看到它,那么它会略有不同。我必须修改以修复它的文件在 v3.1.1 中不存在。

我在 Github 上的 Rails 项目中提交了issue 3645,将其固定在一个 fork 中,并向他们发出了 pull request。希望这将在 Rails 3.0 的新版本中得到修复。

同时,如果您想使用我的固定版本,请访问https://github.com/mhuffnagle/rails/tree/3-0-stable

于 2011-11-16T15:19:05.973 回答