首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从war文件中运行rake任务

从war文件中运行rake任务
EN

Stack Overflow用户
提问于 2012-03-23 20:37:03
回答 2查看 1.2K关注 0票数 0

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

我试过了

代码语言:javascript
复制
java -jar GV_S.war -S rake db_migrate[1]

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

这给了我:

代码语言:javascript
复制
[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

任何帮助都将不胜感激

-Thanks

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-03 03:26:33

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

代码语言:javascript
复制
java -jar lib/jruby-complete-1.6.7.jar -S rake db_migrate[1] 

它在我的个人机器上工作得很好,但在生产环境中给出了类似下面的消息

代码语言:javascript
复制
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。我负责安装在我的机器上但不是在生产机器上的那些……在生产环境中安装这些gem不是一个选择……因此,我将rake任务中所需的gem安装在一个单独的目录中,并将其转换为jar文件(http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar)……这个命令终于起作用了..。

代码语言:javascript
复制
java -jar lib/jruby-complete-1.6.7.jar -rlib/mygems.jar -S rake db_migrate[1]

注意事项:无论你把jar文件放在什么地方,warbler都会把它发送到lib目录,尽管你仍然会在原来的位置看到一个虚拟的jar文件……我认为如果用几种方法来解决这个问题,尽管还没有尝试过这个方法,这个解决方案可能会更好一些。

i>by包括jruby-complete-1.6.7.jar本身中的gem文件,正如上面提到的博客中提到的那样……

代码语言:javascript
复制
java -jar lib/jruby-complete-1.6.7.jar -S rake db_migrate[1]

应该行得通..。

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

代码语言:javascript
复制
java -jar myapp.jar -S rake db_migrate[1] 

应该行得通

票数 0
EN

Stack Overflow用户

发布于 2012-03-24 04:23:08

这似乎还不被.war支持--执行jruby风格的commads与可执行的.jar一起工作,但是创建一个jruby可执行文件只允许它在嵌入式web服务器上运行……没别的了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9839319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档