Как правильно инициализировать плагины Redmine, которые необходимо создать модель (прочитать запись базы данных), определенную в самом плагине?Как правильно создать экземпляр модели в плагине init.rb?
Например, у меня есть плагин my_redmine_plugin
, который поставляется с моделью MyPluginModel
. На инициализации плагина, я хотел бы
- прочитал запись
MyPluginModel
из БД - запустить некоторый код инициализации с записью
Учитывая следующий код:
require 'redmine'
Redmine::Plugin.register :my_redmine_plugin do
name 'My Redmine Plugin'
# ...
end
Rails.configuration.to_prepare do
m = MyPluginModel.find(1)
run_some_init_code(m)
end
Похоже, to_prepare
работает до миграции:
$ bundle exec rake redmine:plugins:migrate NAME=my_redmine_plugin
`table_structure': Could not find table 'mypluginmodel' (ActiveRecord::StatementInvalid)
...
Когда я комментирую блок to_prepare
во время миграции, все работает нормально. Есть ли способ обнаружить процесс миграции?
Когда вы просто ловили Исключение, мне все равно пришлось бы найти способ обнаружить, было ли это вызвано во время миграции (игнорировать его) или производством (выход с ошибкой). Что возвращает нас к моему первоначальному вопросу: как обнаружить миграцию? –
@MichaelKrupp см. Https://stackoverflow.com/questions/1858230/how-to-detect-whether-my-rails-is-running-in-migration-or-not-in-environment-rb – bbozo
@bbozo спасибо ! Теперь у меня, по крайней мере, есть обходной путь. Хотя я мог вообразить, что натыкался на всевозможные смешные кромки с этим, так как некоторые другие люди уже прокомментировали сайт, который вы связали. –