自分が公開しているRedmineのプラグインが、他のプラグインと一緒に使うと動かないといった問題が2回発生しました。
- Parent issue filter plugin for redmine の v1.0.2 をリリースしました。 - Enjoy*Study
- Copy parent issue id plugin for redmine の v1.0.1 をリリースしました。 - Enjoy*Study
原因は、各プラグインで同じ名前のファイル(中身は別物)を require
/require_dependency
してしまっていたために、片方のファイルはキャッシュが効いて読み込みまれずに、そのプラグイン側でエラーが発生するという問題でした。
自分のプラグインで問題がおきたファイルパスは、下記の2つでした。
- lib/query_patch.rb
- lib/issue_patch.rb
GitHubなどでコード検索してみたところ、require 'query_patch'
や require 'issue_patch'
といったものが結構使われているので、問題となるプラグインの組み合わせは結構あるのではと思います。
ということで、ありがちな名前による競合を防ぐために、パス(またはファイル名)にプラグイン名が入るようにするといった方法があるかと思います。
- lib/{プラグイン名}/query_patch.rb
- lib/{プラグイン名}_query_patch.rb
ぜひ、これで競合するパターンが減ると、Redmineユーザとしてはうれしいです。