背景
RedmineにMarkdownフォーマットを追加するプラグイン redmine_redcarpet_formatterがあるのですが、Redmine2.5でMarkdownフォーマットが試験的に追加されたことで、名前やフォーマッタ名が衝突しています。
そのため、当該プラグインを入れたままRedmine2.5へアップデートすることができなくなっており、少し回避策を取りました。
おことわり
ひとまず動作確認はしましたが、どんな影響があるかわからないので使う場合は自己責任でお願いします。
また、Redmine2.5のMarkdownフォーマッタが試験的な導入となっているので、将来的に衝突回避される場合はこの変更を元に戻す二度手間が発生するでしょう。
そのため、特に2.5.xで欲しい機能がない限りは2.4.xでとどまっておくことを個人的にはオススメします。
変更箇所
変更による影響が少なそうなredmine_redcarpet_formatterプラグインのコードを少しいじります。
Gemfile
gem指定をコメントアウト
-gem "redcarpet"
+#gem "redcarpet"
init.rb
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'redmine'
-require 'redmine/wiki_formatting/markdown/formatter'
-require 'redmine/wiki_formatting/markdown/helper'
+require 'redmine/wiki_formatting/redcarpet_markdown/formatter'
+require 'redmine/wiki_formatting/redcarpet_markdown/helper'
Redmine::Plugin.register :redmine_redcarpet_formatter do
description 'Markdown wiki formatting by Redcarpet for Redmine'
version '2.1'
- wiki_format_provider 'markdown', Redmine::WikiFormatting::Markdown::Formatter, Redmine::WikiFormatting::Markdown::Helper
+ wiki_format_provider 'redcarpet_markdown', Redmine::WikiFormatting::RedcarpetMarkdown::Formatter, Redmine::WikiFormatting::RedcarpetMarkdown::Helper
settings :default => {
'enable_hardwrap' => '1',
lib/redmine/wiki_formatting/markdown/formatter.rb
-> lib/redmine/wiki_formatting/redcarpet_markdown/formatter.rb
module Redmine
module WikiFormatting
- module Markdown
+ module RedcarpetMarkdown
class Formatter
# include ActionView::Helpers::TagHelper
lib/redmine/wiki_formatting/markdown/helper.rb
-> lib/redmine/wiki_formatting/redcarpet_markdown/helper.rb
module Redmine
module WikiFormatting
- module Markdown
+ module RedcarpetMarkdown
module Helper
unloadable
どっちが対応すべきなの?
実際に今後対策を取るとしたらどっちが修正すべきなのって話ですが、プラグイン作者のご指摘のとおり、後発のRedmine本家側が名前の衝突を回避するなり、プラグインに対して要望を出すなりして対応すべきなんじゃないかと思います。
というか、フォーマッタをプラグインから登録できる仕組みなんだから、本家にフォーマッタを導入せずプラグイン化する方が正しい気がしますけどね。たぶんtextileがデフォルトなのは変わらないんでしょうし。
ちなみに、本家の方では既にプラグインがあるという指摘があったのに、誰も対応しなかったんですね…。