0

WAR ファイルとしてデプロイされ、Tomcat アプリケーション サーバーで実行される JRuby/Rails アプリケーションがあります。Rails アプリケーションで使用されているのと同じ ActiveRecord サブクラスを介してデータベースを通過する長時間実行ジョブを実行するためのツールとして、delayed_job または Resque のいずれかを使用したいと考えています。また、アプリケーションの Web 側が遅く感じられないように、別のプロセスまたはスレッドで実行したいと考えています。

delayed_job または Resque を含めて使用する手順は非常に明確です。たとえば、Resque を使用するためにすべての面倒な作業を行ったら、次のことを行うだけです。

QUEUE=* jruby -J-cp /path/to/library -S rake environment resque:work

ただし、これはコマンドラインからのみ機能します。WAR ファイルを Tomcat にデプロイして Resque プロセスを実行できるようにするにはどうすればよいですか? その場合、構成が異なる同じ WAR ファイルですか、それとも WAR ファイルが異なりますか? それが別の WAR ファイルである場合、どのように生成すればよいですか? Resque/DJ プロセス用に別の Tomcat が必要ですか? Resque/DJ プロセスを独自の JRuby/JVM スレッドに入れる方法はありますか? これを実現するために必要な構成のジガリー・ポケリーはありますか?

4

1 に答える 1

0

JRuby は、そのシェル コマンドを認識ARGV[0] =~ /ruby$/してインプロセスで実行するため、これを有利に利用できます。を war ファイルに含めたと仮定するとRakefile、アプリケーション初期化子から同様のコマンドを使用して、スレッドを開始し、その中で Resque を起動できます。Bundler を使用している場合は、既に環境がセットアップされており、インプロセスの子 JRuby に渡される必要があります。

于 2012-01-30T20:06:13.203 に答える