1

レールでdelayed_jobs gem( https://github.com/collectiveidea/delayed_job )を使用すると、通知をキューに入れることができます。しかし、本番サーバーでキューに入れられたジョブを実行する方法がよくわかりません。私はただ走れることを知っていた

$ rake jobs:work

ローカル サーバーのコンソールで。ドキュメントにあるように、次のことができます。

RAILS_ENV=production script/delayed_job start
RAILS_ENV=production script/delayed_job stop

# Runs two workers in separate processes.
RAILS_ENV=production script/delayed_job -n 2 start
RAILS_ENV=production script/delayed_job stop

# Set the --queue or --queues option to work from a particular queue.
RAILS_ENV=production script/delayed_job --queue=tracking start
RAILS_ENV=production script/delayed_job --queues=mailers,tasks start

# Runs all available jobs and the exits
RAILS_ENV=production script/delayed_job start --exit-on-complete
# or to run in the foreground
RAILS_ENV=production script/delayed_job run --exit-on-complete

私の質問は、Rails アプリと統合する方法です。次のように、config/initializers にdelayed_jobs.rb というファイルを作成することを考えていました。

# in config/initializers/delayed_jobs
script/delayed_job start if Rails.env.production?

しかし、それが正しい方法であるかどうかはわかりません。ありがとう

4

2 に答える 2

0

ワーカーは、Rails アプリケーションの一部としてではなく、個別のプロセスとして実行されます。最も簡単な方法は、rake タスクをscreenセッションで実行して、端末セッションからログアウトしたときに rake タスクが終了しないようにすることです。しかし、より良い方法があります:

monit や God などのシステムを使用するか、delayed_job が提供するワーカー スクリプトを実行します。詳細については、この質問への回答をご覧ください。

于 2013-02-27T07:12:18.650 に答える
0

私の経験では、カピストラーノの宝石を使用して解決策を見つけました。これは、公式ドキュメントの言葉です

任意のタスクのスクリプト作成と実行をサポートし、正常なデフォルトの展開ワークフローのセットが含まれています。

基本的に、キューの開始/停止、データベースの移行、新しい gem のバンドル、および通常接続で行うすべてのタスクを含む、アプリのデプロイを支援するツールですssh

これは、カピストラーノwebfactionとホスティングに関する美しいチュートリアルです。そして、カピストラーノdelayed_job. 最終的には、開発環境のみを気にする必要があります。本番環境にデプロイする必要があるたびに、リポジトリにコミットしてから

$ cap production deploy

これらのキューの停止/再起動、アプリの再起動、gem のインストール、およびカピストラーノ スクリプトの方法で実行できるすべてのことを実行して、運用環境全体を管理します。

于 2015-05-23T23:47:34.663 に答える