Help us understand the problem. What is going on with this article?

Redmine2.5とredmine_redcarpet_formatterプラグインの衝突回避

More than 5 years have passed since last update.

背景

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がデフォルトなのは変わらないんでしょうし。

ちなみに、本家の方では既にプラグインがあるという指摘があったのに、誰も対応しなかったんですね…。

mather314
元数学専攻のエンジニア。Web系のアプリケーション開発がメインだが、HTMLやCSSよりはバックエンドロジックの分析などが得意。Haskell, Scala, Elmなどを嗜む程度に。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away