Wie initialisieren Sie Redmine-Plugins, die ein im Plugin definiertes Modell (lesen Sie einen Datenbankeintrag) instanziieren müssen?Wie man ein Modell im Plugin init.rb korrekt instanziiert?
Zum Beispiel habe ich ein Plugin my_redmine_plugin
, die mit einem Modell MyPluginModel
kommt. Auf Plugin-Initialisierung, würde ich gelesen
- einen Rekord von
MyPluginModel
von DB - laufen einige Initialisierungscode mit dem Datensatz
der folgende Code Gegeben:
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
Es sieht so aus, als ob to_prepare
vor der Migration ausgeführt wird:
$ bundle exec rake redmine:plugins:migrate NAME=my_redmine_plugin
`table_structure': Could not find table 'mypluginmodel' (ActiveRecord::StatementInvalid)
...
Wenn ich während der Migration den Block to_prepare
auskommentiere, funktioniert alles einwandfrei. Gibt es eine Möglichkeit, den Migrationsprozess zu erkennen?
Wenn ich die Exception einfach abfange, müsste ich immer noch einen Weg finden, um zu erkennen, ob es während der Migration (ignorieren) oder der Produktion (Beenden mit Fehler) verursacht wurde. Was uns zurück zu meiner anfänglichen Frage bringt: Wie kann man Migration erkennen? –
@MichaelKrupp siehe https://StackOverflow.com/Questions/1858230/How-to-detect-Whether-my-Rails-is-running-in-migration-o-not-in-environment-rb – bbozo
@bbozo danke ! Jetzt habe ich zumindest einen Workaround. Obwohl ich mir vorstellen könnte, dass ich in alle möglichen lustigen Randfälle geraten könnte, da einige andere Leute bereits auf der verlinkten Seite kommentiert haben. –