0

アプリケーションに Rails 3.1.3 を使用しています。バックグラウンド ジョブの遅延ジョブには 2.1.4 を使用しています。現在、遅延ジョブを 3.x に更新しようとしています。

delayed_job 3.x とdelayed_job_active_record gem の両方をインストールしました。

bundle install が rails generatedelayed_job:active_recordを実行しようとした後、 rails generatedelayed_job:upgrade。しかし、両方のジェネレータ コマンドがエラーをスローしています。初投げ

ジェネレーター「generators/delayed_job/active_record_generator」を読み込めませんでした。エラー: DelayedJob はモジュールではありません

後で投げながら

ジェネレーター「generators/delayed_job/upgrade_generator」を読み込めませんでした。エラー: DelayedJob はモジュールではありません

誰でも解決策と私が間違ったことを教えてください。

よろしくお願いします

4

1 に答える 1

0

問題は、delayed_jobsの古いバージョンから新しいバージョンにアップグレードするときに、delayedjobsテーブルがすでに存在することです。したがって、delayed_bobジェネレーターが存在しない可能性があります。テーブル構造の主な違いは、queueという名前の追加の列です。したがって、この列をdelayed_jobsテーブルに追加する必要があります。ジェネレータコマンドも同じ仕事をしています。テーブルを変更して列を追加するための移行を生成します。ソースを読んで見つけました。したがって、テーブルを変更するための移行を手動で作成できます。

    rails g migration migration name   

次に、以下のコードを移行に追加して、移行を実行します。

    def up
      add_column :delayed_jobs, :queue, :string
    end
    def down
      remove_column :delayed_jobs, :queue
    end

これで、複数の遅延ジョブを処理し、キューに基づいてジョブを割り当てることができます。

于 2012-11-07T04:56:58.097 に答える