次のdatabase.ymlに基づいて移行を実行しようとしています
データベース.yml:
development:
adapter: postgresql
encoding: utf8
database: test_development
timeout: 5000
queue:
adapter: postgresql
encoding: utf8
database: test_queue_development
timeout: 5000
私がやりたいことは、test_queue_development データベースにテーブル "delayed_jobs" を作成することです。残念ながら、テーブルは test_development で作成されます。delayed_job.rb の初期化子は次のとおりです。
config/initializers/delayed_job.rb:
db_queue_config = ActiveRecord::Base.configurations[Rails.env]['queue']
if db_queue_config
Delayed::Backend::ActiveRecord::Job.establish_connection(db_queue_config)
end
開発中のみ移行を実行しています
移行は Delayed::Backend::ActiveRecord::Job.connection を尊重し、test_queue_development にテーブルを作成する必要がありますが、常に test_development にテーブルを作成します。
デシベル/移行/create_delayed_jobs.rb
class CreateDelayedJobs < ActiveRecord::Migration
def self.connection
Delayed::Backend::ActiveRecord::Job.connection
end
def self.up
create_table :delayed_jobs do |table|
# Allows some jobs to jump to the front of the queue
table.integer :priority, :default => 0
# Provides for retries, but still fail eventually.
table.integer :attempts, :default => 0
# YAML-encoded string of the object that will do work
table.text :handler, :limit => 500.kilobytes
# reason for last failure (See Note below)
table.text :last_error
# The queue that this job is in
table.string :queue, :default => nil
# When to run.
# Could be Time.zone.now for immediately, or sometime in the future.
table.datetime :run_at
# Set when a client is working on this object
table.datetime :locked_at
# Set when all retries have failed
table.datetime :failed_at
# Who is working on this object (if locked)
table.string :locked_by
table.timestamps
end
add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
add_index :delayed_jobs, [:queue], :name => 'delayed_jobs_queue'
end
私の質問は、何が問題なのかを確認できるように、移行に追加のデバッグを導入するにはどうすればよいですか? Railsコンソールに入って次のように入力すると:
Delayed::Backend::ActiveRecord::Job.connection
キュー データベースに関連する情報を取得します。これは、self.connection が正常に実行され、イニシャライザが期待どおりに機能したことを意味します。コード サンプルは canvas-lms から取得されました
ありがとうございました。