2011-02-02 8 views
4

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?)にも噛み付いていませんでした。どんな提案も感謝しています。

乾杯。

答えて

4

は、このコマンドは、限り、私はJRubyの完全なjarファイルをダウンロードして、私はENVを持っていることを確認して

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

の作品が判明:

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

これは興味深いです。 GEM_HOMEにはたくさんのgemファイルがあり、WEB-INFディレクトリにパックされています。しかし、RUBYLIBにはルビー関連のファイルがたくさんあるようです。私がTomcatにデプロイするとき、warファイル以外のruby関連のものを配備することは意図していません。 RUBYLIBで必要なファイルは何ですか?もし私が知っていれば、私はconfig/warble.rbをつまんでそれらを含めることができます。 –

2

私もこの問題があったが、上Windows。

SET RAILS_ENV=production 
SET BUNDLE_WITHOUT=development:test 
SET BUNDLE_GEMFILE=Gemfile 
SET GEM_HOME=gems 
java -classpath "lib/*" org.jruby.Main -S rake db:create db:migrate db:seed 
pause 

のWEB-INFディレクトリからこれを実行する:

this warbler issueに基づいて、私は私達のSAの簡単なDBのセットアップを展開に含める一緒に、Windowsのバッチスクリプトを入れて作ることができました配備されたアプリはそのトリックを行います。私はdbディレクトリ、Rakefile、Windowsのバッチスクリプトをwarble.rbの設定に追加して、すべてうまく動作させる必要がありました。

karesは、ワーブラーで適切なレーキサポートを得るために積極的に取り組んでいるため、これは「今」の回答でなければなりません(期限まで押されていないと確かにきれいな方法があります)。私はそれがつまらないところだったので、とにかく分かち合うと思った。

関連する問題