問題タブ [rails-activejob]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
463 参照

ruby-on-rails - Rails環境全体をロードせずにジョブをActiveJobにエンキューする方法は?

Job を別の場所から ActiveJob にエンキューしたいと思います。コマンドラインからの場合もあれば、cron ジョブからの場合もあります。しかし、redis でエントリを作成するためだけに、毎回環境全体をロードするのはあまり効率的ではありません。

Rails-Application全体をロードせずにActiveJobにジョブをすばやく追加する別のソリューションはありますか?

これは春の仕事であることはわかっていますが、(理由はわかりません)それでも約5秒かかります:

ああ、これが重要な場合: 私は sidekiq を使用します。

0 投票する
1 に答える
2289 参照

ruby-on-rails - ActiveJob を使用する場合、オブジェクト ID のみを渡す必要がありますか?

ActiveJob で次のことを行うことの長所と短所は何ですか。

オプション A:

オプション B:

0 投票する
1 に答える
422 参照

ruby - Resque Adapter を使用した ActiveJob (遅延/タイムアウト機能を追加)

ループを使用して複数のアクティブなジョブを渡す予定です。しかし、各データループに遅延/タイムアウト機能が必要です。私のコードは次のようなものです:

助けてくださいありがとう!

0 投票する
1 に答える
2163 参照

ruby-on-rails - delay_jobsを使用してレールで非同期タスクを実行する方法は?

タスク:Async方法でアイテムを削除する [宿題]

Rails アプリケーションで既に構成Active jobsしましたが、Rails プロジェクトでタスクをdelayed_jobs実行することについてまだ混乱しています。Async

例を見てみましょう。データベースから削除するアイテムがありますが、それを適切に行いたいと考えていAsyncます。また、ブログでperform_laterorperform_nowメソッドについて読んでいます。delayed_job正常に動作している私のコードは次のとおりです。

コントローラ クラス

ジョブクラス

delayed_jobs の公式ドキュメントによるとhandle_asynchronously、メソッドの最後に追加して実行することができasyncます。この場合、どのように実装できますか?

私の質問:

  1. メソッドを見ていると、途中destroyで要素を削除していませんAsyncdestroyただし、メソッドに記述されているすべての手順はSynchronous. 私が間違っている?
  2. そうでない場合、非同期でdestroy削除するメソッドを実装するにはどうすればよいですか?post
  3. バックグラウンド タスクと cron ジョブは同じものですか?

編集 -1

A Fader Darkly から提案を受けた後、プロセスに対して完全に機能するものに変更perform_nowしましたが、テーブルからエントリを削除していません (ユーザーのときに機能するため、コードは問題ありません)。perform_laterAsyncperform_now

また、次のコマンドで手動でジョブを実行している場合、すべて正常に動作します:

新しいデータを取得delay_jobしたらすぐにタスクを実行する方法はありますか?queue

0 投票する
1 に答える
79 参照

ruby-on-rails - GlobalID ベースの ActiveRecord オブジェクトの動作に落とし穴はありますか?

私が何か間違ったことをしている可能性は十分にありますが!

これが話です。ActiveJob ジョブを使用した標準の初心者レベルの RoR セットアップ (4.2) があります。

私の仕事の 1 つは、渡されたレコードで、そのレコードを変更するためのメソッドを呼び出します。ここまではごく普通。次のようになります。

そして、update_myself!メソッドは次のようになります。

ここにミステリーがあります - テストを実行して、それが であることを確認するfixture_instance.thisis_a_columnnewvalue、テストはパスします。アプリを起動してデータベースで何が起こっているかを確認すると、期待どおりに更新されません。

しかし、私が言うとself.thisis_a_column = newvalue、どこでも正しく機能します。

フィクスチャをリロードしたと確信しています...次のようにしました:fixture_instance = RecordinDb.find(fixture_inst.id)

インスタンス化された時期に応じて、ActiveRecord インスタンス内のバインディングが変化するかのようです。私のテストでは、シンボルは送信可能なメッセージとして扱われているように見えますselfが、ジョブではローカル名として扱われています。なんで?

0 投票する
2 に答える
551 参照

ruby-on-rails - Rails 4.2: リダイレクト後のアクティブなジョブ

ActiveJobを使用するのはこれが初めてなので、まだ詳細に頭を悩ませています。ボタンを介して保存するとExecute、非常に長い時間がかかるいくつかの API 呼び出しを実行するフォームがあります。

長い待ち時間なしでページをインデックスにリダイレクトしたいと思います。これが私のコントローラーの作成アクションです..

キャンペーン_コントローラー.rb

...そして私の仕事は幼児期にある

folder_push_job.rb

これを機能させるための最良の方法は何ですか?

アップデート

私が見つけた 1 つの問題は、Job のバックエンドがなかったため、delayed_jobgem をインストールしたことです。

config/application.rb

現在はリダイレクトされ、ジョブはまったく実行されません。

どんな助けでも大歓迎です。