Изменить базу данных ActiveRecord для delayed_job в рельсах 3 - PullRequest
2 голосов
/ 29 ноября 2011

Я работаю над обновлением приложения rails с 2.3.11 до 3.0 (затем со временем 3.1) и изменяю свой камень delayed_job с 2.0.4 до 2.1.4.

Там уже есть таблица delayed_jobsв моей базе данных postgres, но она отличается от базы данных по умолчанию для моего приложения rails.Например, в режиме разработки я использую базу данных 'development', но некоторые из моих отношений, в том числе delayed_jobs, находятся на базе данных 'development_stats'.Другие модели, которые используют эту базу данных, могут получить к ней доступ нормально.

В моем config/initializers/delayed_job.rb для delayed_job 2.0.4:

Delayed::Worker.backend = :active_record
Delayed::Worker.destroy_failed_jobs = false

class Delayed::Job
  establish_connection Rails.configuration.database_configuration["#{Rails.env}_stats"]
end

Теперь я получаю эти ошибки, когда пытаюсьиспользуйте delayed_job:

ActiveRecord::StatementInvalid: PGError: ERROR:  relation "delayed_jobs" does not exist 
LINE 1: DELETE FROM "delayed_jobs"

или

NoMethodError: undefined method `name' for nil:NilClass
    ~/.rvm/gems/ruby-1.9.2-p290/gems/arel-2.0.10/lib/arel/visitors/to_sql.rb:56:in `block in visit_Arel_Nodes_InsertStatement'

Из других вещей, которые я читал, кажется, что модель Delayed :: Job загружается сейчас, когда загружается гем, поэтомуслишком поздно, чтобы изменить БД в инициализаторе.Кто-нибудь еще сталкивался с этой проблемой и был в состоянии найти способ сказать delayed_job использовать другую базу данных?

Заранее спасибо за любую помощь, которую вы можете мне дать ...

Ответы [ 2 ]

1 голос
/ 21 мая 2012

это может помочь, при изменении «имени» таблицы delayed_job я обнаружил, что мне нужно было заставить rails сбросить связанную схему БД для модели следующим образом:

Delayed :: Backend ::ActiveRecord :: Job.set_table_name '' Delayed :: Backend :: ActiveRecord :: Job.reset_column_information

0 голосов
/ 29 декабря 2015

Я нашел следующие работы в файле boot.rb моего приложения (под Padrino) в delayed_job 4.0.2:

Delayed::Backend::ActiveRecord::Job.establish_connection xxxxx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...