問題タブ [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.
ruby-on-rails - ActiveJob::SerializationError と ActiveUUID
次のエラーが表示されます。
これらの宝石を使用している間:
- アクティブUID
- ペーパークリップ
- 遅延ジョブ
- 遅れた_ペーパークリップ
これは私の実際のモデルコードです:
ActiveJobはオブジェクトを処理または認識できないため、エラーはactiveuuidまたはdelayed_paperclipから発生していると推測しています。
これを修正する方法を知っている人はいますか?
ruby-on-rails - CollectionProxy オブジェクトを ActiveJob に渡すことができません
フォアグラウンドで時間がかかるため、バックグラウンドでメッセージのコレクションをマークする必要があります (delayed_job gem を使用しています)。だから私はActiveJob
クラスを作成し、それと変数MarkMessagesAsReadJob
を渡してuser
、すべての読み取りをマークしました。messages
messages
user
私の ActiveJob クラスでは、タスクを実行します。
ただし、タスクを実行しようとすると、エラー ActiveJob::SerializationError (Unsupported argument type: ActiveRecord::Associations::CollectionProxy) が発生しました:
サポートされている型のみを ActiveJob に渡すことができると読みましたが、CollectionProxy オブジェクトをシリアル化できないと思います。これを回避/修正するにはどうすればよいですか?
PS:考えました
しかし、それらを1つずつマークするのはかなり高価だと思います。
ruby-on-rails - ActiveJob で例外をキャッチする方法
例外処理に関するActiveJob ドキュメントでは、ジョブのコンテキスト内で例外処理を実行する方法について、次の例が提供されています。
特定の例外を構築してキャプチャしているアプリケーションでこの手法を使用しています。私の質問は、すべての例外をキャプチャする方法ですか?
さまざまな種類の例外をキャプチャし、それぞれの方法で同じ手順を実行しているため、コードをドライアップしたいと思います。また、現在の実装では、特定の例外が無視されているため、ジョブがサイレントに失敗する場合があります。
ActiveJob を使用して一般的な例外をキャプチャするにはどうすればよいですか?
ruby-on-rails - Ruby/Rails: ActiveJob の未定義メソッド「set」
次のようなジョブを作成しました。
それは私のメーラーを使用します:
私のコントローラー:
次のエラーが発生し続けます: NoMethodError (SendEmailJob:Class の未定義メソッド「set」):
編集 config/application.rb require File.expand_path('../boot', FILE )
レール 4.1.8
ruby-on-rails - Heroku で resque を使用してメールが配信されない
電子メールを送信するための遅延したジョブはキューに入れられ、heroku ログに従って正しく処理されますが、実際には電子メールを受信しません。同じsmtp設定でローカルで期待どおりに機能するため、何が問題なのかわかりません。
ログからの抜粋は次のとおりです。
キューイング:
処理:
production.rb と development.rb の SMTP 設定:
ruby-on-rails - ActiveJob ジョブから url_for / polymorphic_url を使用するにはどうすればよいですか?
ActiveJob ジョブ内から呼び出している通知サービスがあります (delayed_job バックエンドを使用)。各通知の対象はモデル インスタンスであり、いくつかの異なるクラスのいずれかになります。受信者の便宜のために、そのオブジェクトのビューへのリンクを含める必要があります。
url_for はジョブ コンテキストで使用できるメソッドではないため、これは機能しません。
このコードの以前のより限定的なバージョンでは、 を使用Rails.application.routes.url_helpers.model_name_url(object)
しましたが、これはモデル固有です。Rails.application.routes.url_for
モデルではなく、コントローラー/アクションの仕様が必要なようです。
メーラーでは使用できurl_for(object)
、モデル クラスに関係なく、正しいことを行います。では、ジョブ内のポリモーフィック URL ヘルパーにアクセスするにはどうすればよいでしょうか?
ruby-on-rails - ActiveJob には特定の優先順位を持つキューがありますか?
以下のジョブを見ると、ジョブがlow_priority
キューで実行されていると思います。
私はこれに同意しますが、これは正しいキューの名前ですか? 実はプライオリティとは関係ありません。たとえば、キューという名前のジョブを作成した場合、キューと:my_queue
同じ優先度を持つものとして扱われ:low_priority
ます。
ドキュメントから、キューに入れられたジョブに優先順位を付けることができることを示すものを見つけることができませんでした。delayed_jobs にこの機能があることは知っていますが、active_job には見つかりませんでした。
ruby-on-rails - Ruby: 基本クラスのコンテキストでメソッドを実行する
約 20 の異なるアクティブなジョブがあり、それぞれが controller のコンテキスト外で PaperTrail コンテンツbefore_perform
を設定するメソッドを必要としていることに気付きました。
before_perform
このメソッドをヘルパーに入れてから、各ジョブにヘルパーを含めることを計画していましたが、エラーが発生しています:
MyApp:JobHelpers:Module の未定義のメソッド `before_perform'
これは、問題のモジュールが単なるモジュールであり、アクティブなジョブではないためだと考えています。before_perform
各アクティブ ジョブで同じ 4 行の方法を繰り返さないようにするにはどうすればよいですか?
Job_helper:
仕事: