RDocの文字セット

今仕事で作ったRailsアプリケーションのドキュメントを書いているのですが、気になった点が一つ。

RailsにはRDocを生成するためのdoc:appタスクが用意されていますが、rakeコマンドからRDocの文字セットを指定できません。
このため、デフォルト文字セット(ISO-8859-1)が変更できず、RDocコメントを日本語で書くとドキュメントの文字化けが発生してしまいます。
そこで、rakeコマンドから文字セットを指定できるように変更してみました。

Rakefileの編集

RAILS_ROOT/Rakefileに次のコードを追記します。

Rake::RDocTask.class_eval { 

  @@default_options = []
  
  class << self
    
    def default_options
      @@default_options
    end
    
    def default_options=(options)
      @@default_options = options
    end
    
  end
  
  alias :_option_list :option_list
  def option_list
    _option_list + @@default_options
  end  
  
}
charset = ENV['CHARSET'] || 'UTF-8'
Rake::RDocTask.default_options = ['-c', charset]

RDocタスクの実行

タスク実行時に変数CHARSETで文字セットを指定します。

% rake doc:app CHARSET=UTF-8