Làm cách nào để bạn khởi tạo chính xác các plugin Redmine cần khởi tạo mô hình (đọc bản ghi cơ sở dữ liệu) được xác định trong chính plugin?Làm thế nào để tạo nhanh một mô hình trong plugin init.rb?
Ví dụ: Tôi có một plugin my_redmine_plugin
đi kèm với một mô hình MyPluginModel
. Mở Plugin khởi, tôi muốn
- đọc một kỷ lục
MyPluginModel
từ DB - chạy một số mã khởi tạo với kỷ lục
Với đoạn mã sau:
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
Có vẻ như to_prepare
chạy trước khi di chuyển:
$ bundle exec rake redmine:plugins:migrate NAME=my_redmine_plugin
`table_structure': Could not find table 'mypluginmodel' (ActiveRecord::StatementInvalid)
...
Khi tôi nhận xét khối to_prepare
trong quá trình di chuyển, mọi thứ đều hoạt động tốt. Có cách nào để phát hiện quá trình di chuyển không?
Khi chỉ đơn giản là bắt ngoại lệ, tôi vẫn phải tìm cách phát hiện xem nó có gây ra trong quá trình di chuyển hay không (bỏ qua) hoặc sản xuất (thoát với lỗi). Điều này đưa chúng ta trở lại câu hỏi ban đầu của mình: Cách phát hiện di chuyển? –
@MichaelKrupp xem https://stackoverflow.com/questions/1858230/how-to-detect-whether-my-rails-is-running-in-migration-or-not-in-environment-rb – bbozo
@bbozo cảm ơn bạn ! Bây giờ tôi ít nhất có một workaround. Mặc dù tôi có thể tưởng tượng chạy vào tất cả các loại trường hợp cạnh tranh vui nhộn với điều này, như một số người khác đã nhận xét trên trang web bạn đã liên kết. –