3

誰か、delayed_jobs gem を拡張していくつかのカスタム列を追加できるようにする方法を教えてもらえますか?

いくつかの列を追加しましたが、それらを「きれいに」使用しようとすると、次のようになります。

保護された属性を一括割り当てできません: owner_type、owner_id

したがって、列を cattr_accessor に追加する必要があります。

module Delayed
  class Worker
    DEFAULT_SLEEP_DELAY      = 5
    DEFAULT_MAX_ATTEMPTS     = 25
    DEFAULT_MAX_RUN_TIME     = 4.hours
    DEFAULT_DEFAULT_PRIORITY = 0
    DEFAULT_DELAY_JOBS       = true
    DEFAULT_QUEUES           = []
    DEFAULT_READ_AHEAD       = 5

    cattr_accessor :min_priority, :max_priority, :max_attempts, :max_run_time,
      :default_priority, :sleep_delay, :logger, :delay_jobs, :queues,
      :read_ahead, :plugins, :destroy_failed_jobs, **:owner_id, :owner_type**

ただし、これを拡張する最良の方法はわかりません。私の推測/試みは、ファイルを作成して初期化ディレクトリに追加することです。ただし、何らかの理由で機能しませんでした。

ヒントをいただければ幸いです。

4

3 に答える 3

1

delayed_jobs テーブルを拡張する必要は本当にありますか? 私のアプローチは、それをそのままにして、次の 2 つの手法のいずれかを使用することでした。

  • キューに入れられるオブジェクトに owner_id および owner_type フィールドを追加します。
  • :belongs_to とdelayed_jobs の関係を持つ別のテーブルを作成します。次に、DJ のフックを使用して、ジョブの存続期間中、2 つの同期を維持します。

最初のアプローチはより単純ですが、すべての状況に適しているわけではありません。それらのいずれかがあなたのために働くでしょうか?

于 2012-08-28T20:46:49.600 に答える