読者です 読者をやめる 読者になる 読者になる

RedmineのリポジトリブラウザでJavaScriptがダウンロードされる

タイトル通り「見る」をクリックしてもダウンロードされてしまう。Redmineのソース中のコメントに書かれているのだがascii文字が30%以下のファイル、つまり日本語のコメントが多く書かれているファイルはバイナリファイルとして扱われダウンロードされてしまうらしい。

lib/redmine/mime_type.rb で MIME_TYPE が text/* となっているファイルは無条件でテキストファイル扱いされるようなので、jsの設定をtext/javascriptに修正すれば解決しそう。

@@ -44,7 +44,7 @@
       'image/x-ms-bmp' => 'bmp',
       'image/x-xpixmap' => 'xpm',
       'image/svg+xml'=> 'svg',
-      'application/javascript' => 'js',
+      'text/javascript' => 'js',
       'application/pdf' => 'pdf',
       'application/rtf' => 'rtf',
       'application/msword' => 'doc',

または app/controllers/repositories_controller.rb の is_entry_text_data? メソッドを修正してもよい。

@@ -193,6 +193,8 @@
     # It is very strict that file contains less than 30% of ascii symbols
     # in non Western Europe.
     return true if Redmine::MimeType.is_type?('text', path)
+    # JavaScript
+    return true if Redmine::MimeType.of(path) == 'application/javascript'
     # Ruby 1.8.6 has a bug of integer divisions.
     # http://apidock.com/ruby/v1_8_6_287/String/is_binary_data%3F
     return false if ent.is_binary_data?
  end

影響範囲の狭そうな2番目の方法を適用してみた。