0

RailsアプリにはJRubyとMRIの両方を使用する必要があります。

これがシナリオです-

私のアプリは、多くのスレッドを処理するバックグラウンドサーバーを使用しています。MRIでの実行でパフォーマンスの問題が発生しています。バックグラウンドサーバーはrakeタスクで起動され、Rails環境を使用する必要があります。

WebサーバーにPassengerを使用しています。乗客に対するJRubyのサポートはごく最近のものなので、MRIを使用していきたいと思います。

これが私が欲しいものです-

これはRuby1.9を使用してサーバーを起動します。

sudo passenger start -p 80 -e production --user=deploy

同じアプリ内で、これはバックグラウンドサーバーを実行します-

jruby -S rake background_server:start_daemon RAILS_ENV=production

問題は、2番目のコマンドjruby -S rakeがアプリの再バンドルを要求することです。

これを適切に配置する方法はありますか?

4

1 に答える 1

1

同じアプリではありません。これを実現するには、異なるルビーで実行される個別のアプリケーションが必要になります。SOAアーキテクチャでは、ジョブを処理するためにバックグラウンドサーバーにメッセージを送信します。

したがって、herokuでは、MRIで実行されるWeb用に1つのアプリケーションを作成します。次に、バックグラウンドプロセス用のアプリケーションをJRubyで作成します。共有Redisまたは共有データベースを介して通信します。

トリニダードまたはプーマを使用し、すべてをJRubyに保管することをお勧めします(乗客を走らせ続けるのではなく)。はるかに単純なアーキテクチャになります。

于 2013-01-31T16:02:59.170 に答える