redmine trunkを落としてglossary pluginが動くか試してみる(続)
redmine trunkを落としてglossary pluginが動くか試してみる - torutkのブログ の続きです。
来るべきRedmine 4.0に備えて、Glossary Pluginが動作するかどうか(動作しないことが確認済み)、修正事項の調査をしています。
調査の詳細は、次の個人Redmineのチケットに記載中です。
http://www.torutk.com/issues/81
先に進めてみる
Ruby on Rails 4.xまでの alias_method_chainは、ruby 2.0の標準機能 Module#prepend で書き換えるのだそうですが、書き換え方がよく分からず、当てずっぽうな修正で次に進んでみました。
マイグレーション時のエラー
すると、プラグインのマイグレーションで新たなエラーが出ました。
StandardError: Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release the migration was written for: class CreateGlossaryStyles < ActiveRecord::Migration[4.2]
プラグインディレクトリのdb/migrate/下にあるコードではクラス宣言に
class CreateGlossaryStyles < ActiveRecord::Migration
と記述されていますが、ActiveRecord::Migrationを直接使うのはダメで、Railsのリリースバージョンを指定するのが必要なようです。
class CreateGlossaryStyles < ActiveRecord::Migration[5.1]
用語集メニュークリックでエラー
マイグレーションが実行できたので、Redmineを実行し、Glossary Pluginを使うプロジェクトを作成し、メニューの[用語集]をクリックしたところ次のエラーとなりました。*1
undefined method `before_filter' for GlossaryController:Class Rails.root: /path/to/trunk Application Trace | Framework Trace | Full Trace plugins/redmine_glossary/app/controllers/glossary_controller.rb:7:in `<class:GlossaryController>' plugins/redmine_glossary/app/controllers/glossary_controller.rb:2:in `<top (required)>'
before_filterは、プラグインを作成するときにほぼ必須の手段なので、なかなかに厳しい非互換なところです。
今回確認した要修正事項
- db/migrate/の下のコードでは、ActiveRecord::Migrationを継承している宣言をActiveRecord::Migration[5.1]に修正する必要がある。
- before_filterを使っているコードを何かに修正する必要がある
- attr_accessibleを使っているコードを何かに修正する必要がある
その他
デフォルトで含まれるサーバーがWEBrickからPumaに変わっている模様
Redmineのtrunkをインストールしているときに、gemでpumaを取り込んでいるのが見えました。
プラグイン開発用の環境でRedmineの標準サーバーを起動すると、
$ bundle exec rails server -b 0.0.0.0 => Booting Puma => Rails 5.1.6 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://0.0.0.0:3000 Use Ctrl-C to stop
とPumaが実行されました。
*1:パスの表記は長いので一部削除