4

Rails(2.2.2)アプリケーションをwarbler(1.2.1)とJRuby(1.5.6)を使用してTomcat7サーバーで実行していますが、複数のマシンへの展開を簡素化したいので、rakeタスクを実行します。 、のようdb:migrateに、TomcatWEB-INFの場所の下。すべての移行とともにdbフォルダーをパッケージ化しました。

オンラインで推奨されている方法の1つが機能しない:

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など。これは実行間で実際には一貫していません)。

この質問(jrubywarデプロイメントを使用してtomcatによって提供されるrailsアプリでrakerakeタスクを実行するにはどうすればよいですか?)にも噛み付きはありませんでした。任意の提案をいただければ幸いです。

乾杯。

4

2 に答える 2

4

このコマンドが機能することがわかります

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
于 2011-02-03T01:44:22.647 に答える
2

私もこの問題を抱えていましたが、Windowsで。

このウグイスの問題に基づいて、Windowsバッチスクリプトをまとめてデプロイに含め、SAのDBセットアップを簡単にすることができました。

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ディレクトリからこれを実行するとうまくいきます。すべてがうまく機能するように、dbディレクトリ、Rakefile、およびWindowsバッチスクリプトをwarble.rb構成に追加する必要がありました。

karesは、ウグイスで適切なレーキサポートを取得するために積極的に取り組んでいるので、これは「今のところ」の答えになるはずです(そして、締め切りに間に合わなかった場合は、確かにクリーンな方法があります)。それはつまずきだったので、とにかく共有します。

于 2013-01-04T18:49:37.130 に答える