tomcat - 在 Tomcat 和 JRuby 下运行 Rake 任务

标签 tomcat rake jruby jrubyonrails warbler

我们已经使用 warbler (1.2.1) 和 JRuby (1.5.6) 在 Tomcat7 服务器上运行了我们的 Rails (2.2.2) 应用程序,但是由于我们想要简化到多台机器的部署,我们想要运行rake 任务,如 db:migrate,在 tomcat WEB-INF 位置下。我们已经将 db 文件夹与所有迁移打包在一起。

我们看到在线推荐的一种方式不起作用:

java -jar lib/jruby-core-1.5.6.jar -S $JRUBY_HOME/bin/rake db:migrate RAILS_ENV=staging

/var/lib/jruby/bin/rake:9:in `require': no such file to load -- rubygems (LoadError)
        from /var/lib/jruby/bin/rake:9

添加到 ENV 后:

GEM_HOME=$JRUBY_HOME/lib/ruby/gems/1.8
RUBYLIB=$JRUBY_HOME/lib/ruby/site_ruby/1.8

同样的命令给出:

/var/lib/jruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:32 warning: already initialized constant RAKEVERSION
/var/lib/jruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require': no such file to load -- fileutils (LoadError)
        from /var/lib/jruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /var/lib/jruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:35
        from /var/lib/jruby/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:31:in `require'
        from /var/lib/jruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
        from /var/lib/jruby-1.5.6/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:29
        from /var/lib/jruby-1.5.6/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:19:in `load'
        from /var/lib/jruby/bin/rake:19

如果我只是运行:

jruby -S $JRUBY_HOME/bin/rake db:migrate RAILS_ENV=staging

我收到了由供应商化的 gem 导致的大量 gem 错误调用堆栈。 (OutOfMemoryError、NUllPointerException 等。实际上在运行之间并不一致)。

这个问题 ( How do I run rake rake tasks in a rails app which is served by tomcat with jruby war deployment? ) 也没有被咬到。任何建议表示赞赏。

干杯。

最佳答案

原来这个命令有效

java -jar /var/lib/jruby/jruby-complete-1.5.6.jar -S rake  db:migrate RAILS_ENV=staging

只要我下载 jruby-complete jar 并确保我有 ENV:

RUBYLIB=$JRUBY_HOME/lib/ruby/site_ruby/1.8
GEM_HOME=$JRUBY_HOME/lib/ruby/gems/1.8

关于tomcat - 在 Tomcat 和 JRuby 下运行 Rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880537/

相关文章:

html - 我的 jsp 没有看到 css

security - 防止输入处理不当攻击的 Tomcat 虚拟主机

JRuby 中的 Java 反射 : Determining class of java. util.regex.Pattern

ruby-on-rails - 如何禁用 rail 2.3.11 中的弃用日志记录?

mysql - rails-mysql rake db :create - Library not loaded libmysqlclient. 20.dylib 图像未找到

java - 在jruby中导入java包中的所有类

tomcat - 记录Tomcat Server的所有HTTP请求?

tomcat - 我在没有启动和停止服务器的情况下删除了 Webapp

ruby-on-rails - ruby on rails rake db :seed undefined method for