Deploy jruby project on tomcat on windows platform

I am new to the world of rubies, after some research I can create a demo rails app and test it on the webrick server.

But I ran into a problem when I start deploying with tomcat. I use warbler to create a war file for deployment without errors. Copy the war under the webapps folder on Tomcat 7.0, start the server and try to run it in the browser. I found that the resource file is unavailable and the controller method cannot redirect to the correct view, but displays "We're sorry, but something went wrong." message

Deployment configuration I tried

  Juby 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

  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 tomcat log form

  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 seems that a routing problem is occurring, is there a problem when deploying a rails application other than the ROOT location?

I have a research on a similar topic to this, I tried some solution, for example adding the command below on production.rb, but it didn’t help.

config.action_controller.relative_url_root = "/demo" 

Thank you for your decision.

+4
source share
1 answer

Did you precompile your assets before you rocked?

You need to run rake assets:precompile to create static content before running warble

+3
source

Source: https://habr.com/ru/post/1447140/


All Articles