2012-02-16 6 views
0

サブミットされたジョブの表をモニターすることによって、バックグラウンド・ジョブ・サーバーを実行するクラスを作成しました。サーバーを実行するために必要なコードは、本質的である:私はテストのためのrakeタスクでこれを包みましたが、今私は、バックグラウンドへの道の仕事をしたいと、このサーバーを管理するためのinitスクリプトを提供フォーク・レール・タスクをバックグラウンド・ジョブにジョブ制御する

j = JobServer.new 
j.run! 

。私はdaemonsの宝石で遊んでいる間に過ごしましたが、最終的には、バックグラウンドprocをオフにするときにファイル記述子を閉じるという結論に達しました。私のデータベースのバックエンドはSQLite3なので、これはうまくいきません。ファイル記述子を閉じると、Railsが怒ってしまう傾向があります。

私がしようとしていることを達成する簡単な方法はありますか?私は、delay_jobの宝石を別のユーザーの回答で見たことを追加しますが、私が助けることができるなら、私はJobServerクラスを書き直したくありません。

+0

私はresqueまたはdelayed_jobを試してみるべきだと思っています。それはあなたのコードであまり変更されていないかもしれません。私の意見によると、resque – Amar

答えて

0

あなたはおそらくそれはあなたが開始/停止できるようになるという素敵な小さな熊手を書くスポーン方法

http://www.ruby-doc.org/core-1.9.3/Process.html#method-c-spawn 

を使用する/あなたの仕事サーバーを再起動します。

+0

私は 'Process :: fork'で自分自身でロジックを書くことになりました。私は 'Process :: spawn'を見て始めましたが、Rake環境からRakeをフォークオフする必要がありました。正しい方向に私を指してくれてありがとう。 –