プラグイン自体で定義されたモデルをインスタンス化する(データベースレコードを読み込む)必要がある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-whe-my-rails-is-running-in-migration-or-not-in-environment-rb – bbozo
@bbozoありがとう!今私は少なくとも回避策があります。他の人があなたがリンクしているサイトについて既にコメントしているので、私はこれであらゆる種類の面白いケースに遭遇すると想像することができます。 –