2011-11-15 45 views
1

我想通過Warbler生成的war文件將Rails應用程序部署到Tomcat。戰爭文件部署到沒有任何問題/ myproject的護欄貴,但是,當我嘗試在應用程序訪問一個頁面,我越來越:上下文沒有被warbler和tomcat正確設置

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它的失敗。還有其他堆棧溢出文章(正確地)指出不建議使用relative_url_root,而應該設置RAILS_RELATIVE_URL_ROOT環境變量。

the Rails project on GitHub

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 

我沒有任何運氣搞清楚如何做到這一點使用鶯和Tomcat,雖然。有什麼建議麼?對於它的價值,當我在根上下文中運行應用程序時,該應用程序工作正常。

我的環境:

  • 鶯1.3.2
  • 的Tomcat 7.0.22
  • 的JRuby 1.6.5
  • 的Rails 3.0.10
+0

我也可以使用[trinidad](https://github.com/trinidad/trinidad)獲得相同的行爲。 – Marc

+0

這裏的問題與rails 3.1.1相同。 –

+0

作爲一個臨時的解決方法,我已經在錯誤發生的第54行之前添加了'options.delete(:relative_url_root)'到** actionpack-3.0.10/lib/action_controller/railtie.rb **。 – Marc

回答

0

大量挖掘後,它看起來像這個特殊的異常是由於中缺少參數引起的ActionController :: DeprecatedBehavior.relative_url_root在Rails v3.0.10中=。米格爾,你的問題可能是相關的,但是,如果你在Rails v3.1.1中看到它,那麼它就會有所不同。我必須修改以修復該文件的文件在v3.1.1中不存在。

我在Github的Rails項目中提交了issue 3645,將它固定在一個fork中,並向它們發出pull請求。希望這將在Rails 3.0的新版本中得到解決。

與此同時,如果您想使用我的固定版本,它可在https://github.com/mhuffnagle/rails/tree/3-0-stable

+0

謝謝,我會試試看。 –

+0

我的請求被Rails 3-0-stable接受,所以希望它能在Rails 3.0.11中修復。 – Marc

+0

我會嘗試使用rails-3-0-stable分支,謝謝! –