【问题标题】:Running rake task from within war file从 war 文件中运行 rake 任务
【发布时间】:2012-03-23 12:37:02
【问题描述】:

我的代码库最初是用 ruby​​ 编写的。它有一个rakefile.rb 文件来执行数据库迁移。后来我把整个东西都改成了 jruby,以便于部署,效果很好。我面临的唯一问题是如何运行我的 rake 任务(执行数据库迁移)。

我试过了

java -jar GV_S.war -S rake db_migrate[1]

1 是版本,但这不起作用。

这给了我:

[Winstone 2012/03/23 18:04:56] - Beginning extraction from war file
[Winstone 2012/03/23 18:04:56] - WARNING: The Servlet 2.4/2.5 spec XSD was unavailable inside the winstone classpath. Will be retrieved from the web if required (slow)
[Winstone 2012/03/23 18:04:56] - No webapp classes folder found - /tmp/winstone6913591014121608835webroot/GV_S.war/WEB-INF/classes
[webapp 2012/03/23 18:04:57] - jruby 1.6.7 (ruby-1.9.2-p312) (2012-02-22 3e82bc8) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_26) [linux-amd64-java]
[Winstone 2012/03/23 18:05:03] - Listener winstone.ajp13.Ajp13Listener not found / disabled - ignoring
[Winstone 2012/03/23 18:05:03] - Listener winstone.ssl.HttpsListener not found / disabled - ignoring
[Winstone 2012/03/23 18:05:03] - Winstone Servlet Engine v0.9.10 running: controlPort=disabled
[Winstone 2012/03/23 18:05:03] - HTTP Listener started: port=8080

任何帮助将不胜感激

-谢谢

【问题讨论】:

    标签: ruby tomcat migration jruby sequel


    【解决方案1】:

    warbler 似乎尚不支持此功能 - 执行 jruby 样式的 commads 可与可执行文件 .jar 一起使用,但制作 .war 可执行文件仅允许它与嵌入式 Web 服务器一起运行……仅此而已。

    【讨论】:

    • 嗨,kares,感谢您抽出宝贵的时间......似乎有解决这个问题的办法......就像blog.dberg.org/2009/10/…中讨论的那个......只是那些不起作用我的情况:(....还有其他人也面临类似的问题....
    • java -jar jruby-complete-1.6.7.jar -S rake db_migrate[1] 给我:无法从 jruby-complete-1.6.7.jar 加载主类清单属性
    【解决方案2】:

    终于找到了有用的东西……我第一次尝试

    java -jar lib/jruby-complete-1.6.7.jar -S rake db_migrate[1] 
    

    这在我的个人机器上运行良好,但在生产中给了我类似下面的消息

    rake aborted!
    cannot load Java class com.mysql.jdbc.Driver
    
    Tasks: TOP => db_migrate
    (See full trace by running task with --trace)
    

    这是因为我在我的 rake 任务中使用了像 sequel、logger 等 gem ...... .. 所以我将 rake 任务所需的 gem 安装在一个单独的目录中并将其转换为 jar 文件(http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar)...这个命令终于奏效了...

    java -jar lib/jruby-complete-1.6.7.jar -rlib/mygems.jar -S rake db_migrate[1]
    

    注意:无论您将 jar 文件放在何处,warbler 都会将其始终发送到 lib 目录,尽管您仍会在原始位置看到一个虚拟 jar 文件... 我认为如果通过几种方式解决该解决方案可能会更整洁,虽然还没有尝试过......

    i>通过将 gem 文件包含在 jruby-complete-1.6.7.jar 本身中,如上面提到的博客中所述...

    java -jar lib/jruby-complete-1.6.7.jar -S rake db_migrate[1]
    

    然后应该工作......

    ii>通过编写某种清单文件并将其包含在 mygems.jar 中以使其独立运行...如果发生这种情况

    java -jar myapp.jar -S rake db_migrate[1] 
    

    应该工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-09
      • 2012-11-15
      • 2020-06-18
      • 2019-05-31
      • 2014-12-05
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多