warbler(1.2.1)とJRuby(1.5.6)を使用してTomcat7サーバーでRails(2.2.2)アプリケーションを実行していますが、 tomcat WEB-INFの下にあるdb:migrate
のようなレーキタスクを実行したいと考えています。すべての移行とともにdbフォルダをパッケージ化しました。私たちはオンライン推奨を見てきましたTomcatとJRubyでのレイクタスクの実行
一つの方法は動作しません:
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
私は、ベンダー化された宝石から生じる宝石のエラーの大きな呼び出しスタックを取得します。 (OutOfMemoryError、NUllPointerExceptionなど。実行間では実際には一貫性がありません)。
この質問(How do I run rake rake tasks in a rails app which is served by tomcat with jruby war deployment?)にも噛み付いていませんでした。どんな提案も感謝しています。
乾杯。
これは興味深いです。 GEM_HOMEにはたくさんのgemファイルがあり、WEB-INFディレクトリにパックされています。しかし、RUBYLIBにはルビー関連のファイルがたくさんあるようです。私がTomcatにデプロイするとき、warファイル以外のruby関連のものを配備することは意図していません。 RUBYLIBで必要なファイルは何ですか?もし私が知っていれば、私はconfig/warble.rbをつまんでそれらを含めることができます。 –