简体   繁体   English

在Windows平台上将jruby项目部署到tomcat

[英]Deploy jruby project to tomcat in windows platform

I am newbie in the ruby world, after doing some research I can generate a demo rails application and testing on the webrick server 我是红宝石世界的新手,在做了一些研究之后,我可以在webrick服务器上生成一个demo rails应用程序并进行测试

But I have encounter the problem when I start to deploy with tomcat I use warbler to generate war file for deployment successfully without error Copy the war under the folder of webapps on Tomcat 7.0 start the server and try to run on the browser I found that assets file is not accessible & the controller method cannot redirect to correct view, but display "We're sorry, but something went wrong." 但是当我开始使用tomcat部署时我遇到了问题我使用warbler生成war文件以便成功部署而不会出现错误复制warcat在Tomcat 7.0上的webapps文件夹下启动服务器并尝试在浏览器上运行我发现资产文件无法访问,控制器方法无法重定向到正确的视图,但显示“我们很抱歉,但出了点问题。” message 信息

Config of the deployment I have try 我试过的部署配置

JRuby 1.7.0
Gems    
    jruby-rack 1.1.10, 1.0.10
    rails 3.2.9, 3.2.0
    warbler 1.3.6, 1.3.2
Tomcat 7.0.32

here is the access log from tomcat 这是tomcat的访问日志

127.0.0.1 - - [20/Nov/2012:13:56:38 +0800] "GET /demo/ HTTP/1.1" 200 5906
127.0.0.1 - - [20/Nov/2012:13:56:49 +0800] "GET /demo/assets/rails.png HTTP/1.1" 404 728
127.0.0.1 - - [20/Nov/2012:14:01:21 +0800] "GET /demo/order/add HTTP/1.1" 500 643

here is the log form tomcat 这是tomcat的日志形式

2012/11/20 13:56:18 org.apache.catalina.core.ApplicationContext log

    INFO: jruby 1.7.0 (1.9.3p203) 2012-10-22 ff1ebbe on Java HotSpot(TM) Client VM 1.6.0_34-b04 [Windows XP-x86]

    2012/11/20 13:56:18 org.apache.catalina.core.ApplicationContext log

    INFO: using : runtime pool with acquire timeout of 10.0 seconds

    2012/11/20 13:56:19 org.apache.catalina.core.ApplicationContext log

    ContextListener: contextInitialized()

    2012/11/20 13:56:19 org.apache.catalina.core.ApplicationContext log

    SessionListener: contextInitialized()

    2012/11/20 13:56:19 org.apache.catalina.core.ApplicationContext log

    ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@1858aa0')

    2012/11/20 01:56:38 org.apache.catalina.core.ApplicationContext log

    INFO: pool was empty - getting new application instance

    2012/11/20 01:56:47 org.apache.catalina.core.ApplicationContext log

    Started GET "/demo/assets/rails.png" for 127.0.0.1 at 2012-11-20 13:56:47 +0800


    2012/11/20 01:56:47 org.apache.catalina.core.ApplicationContext log

    Connecting to database specified by database.yml


    2012/11/20 01:56:49 org.apache.catalina.core.ApplicationContext log


    ActionController::RoutingError (No route matches [GET] "/assets/rails.png"):
    gems/gems/actionpack-3.2.9/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
    gems/gems/actionpack-3.2.9/lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
    gems/gems/railties-3.2.9/lib/rails/rack/logger.rb:32:in `call_app'
    gems/gems/railties-3.2.9/lib/rails/rack/logger.rb:16:in `call'
    gems/gems/activesupport-3.2.9/lib/active_support/tagged_logging.rb:22:in `tagged'
    gems/gems/railties-3.2.9/lib/rails/rack/logger.rb:16:in `call'
    gems/gems/actionpack-3.2.9/lib/action_dispatch/middleware/request_id.rb:22:in `call'
    gems/gems/rack-1.4.1/lib/rack/methodoverride.rb:21:in `call'
    gems/gems/rack-1.4.1/lib/rack/runtime.rb:17:in `call'
    gems/gems/activesupport-3.2.9/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
    gems/gems/rack-1.4.1/lib/rack/lock.rb:15:in `call'
    gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'
    gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'
    gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'
    gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'
    gems/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'
    gems/gems/railties-3.2.9/lib/rails/engine.rb:479:in `call'
    gems/gems/railties-3.2.9/lib/rails/application.rb:223:in `call'
    file:/lib/jruby-rack-1.1.10.jar!/rack/handler/servlet.rb:22:in `call'




    2012/11/20 14:01:21 org.apache.catalina.core.ApplicationContext log

    Started GET "/demo/order/add" for 127.0.0.1 at 2012-11-20 14:01:21 +0800


    2012/11/20 14:01:21 org.apache.catalina.core.ApplicationContext log

    Processing by OrderController#add as HTML


    2012/11/20 14:01:21 org.apache.catalina.core.ApplicationContext log

    Rendered order/add.html.erb within layouts/application (16.0ms)


    2012/11/20 14:01:21 org.apache.catalina.core.ApplicationContext log

    Completed 500 Internal Server Error in 78ms

It's seem that the routing problem is occur, is it the problem when I deploy the rails application other than the ROOT location? 看起来路由问题出现了,当我部署除ROOT位置以外的rails应用程序时,问题是什么?

I have research the similar topic of this, I have try some solution, such as adding the below command at production.rb, but no help. 我研究了类似的主题,我尝试了一些解决方案,例如在production.rb中添加以下命令,但没有帮助。

config.action_controller.relative_url_root = "/demo"

Thanks for your solutions 谢谢你的解决方案

Did you precompile your assets before warbling? 您是否在进行warbling之前预先编译了您的资产?

You need to run rake assets:precompile to generate static content before running warble 您需要运行rake assets:precompile以在运行warble之前生成静态内容

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM