RedmineのPluginを作成する際に、他のPluginと競合するような安易なファイル名を付けない

自分が公開しているRedmineのプラグインが、他のプラグインと一緒に使うと動かないといった問題が2回発生しました。

原因は、各プラグインで同じ名前のファイル(中身は別物)を 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ユーザとしてはうれしいです。