WindowsでCucumberのフィーチャやRSpecのスペックを日本語で表示する

Ruby on RailsアプリケーションをBDDで開発する際の標準となった感のあるCucumberとRSpecですが、フィーチャやスペックを日本語で記述することになります。 Mac OS XやLinuxでは全く問題にならないのですが、Windowsの場合、UTF-8の出力をコンソールに表示する事が問題となります。 NetBeansを使えば、出力ウィンドウでUTF-8を表示可能ですが、特定のフィーチャを指定して実行する機能などがないため、実用てきではありません。

コードページ変更による方法


コマンドプロンプトのコードページを65001(UTF-8)にする方法もあるようですが、日本語表示フォントの設定がうまく行かなかったり、コマンド入力が正しく実行されなかったりして、手元の環境では使用できませんでした。

何度か試しているうちに気がついたのが、設定の順序です。次の方法だとうまく行くようです。

  1. 日本語フォントを明示的に設定する
  2. コードページを変更する

1は、コマンドプロンプトのウィンドウの左上をクリックして、「プロパティ」を選択し、「フォント」の設定を「MSゴシック」に変更します。

2は、コマンドプロンプトでchcp 65001と入力して、65001(UTF-8)に変更します。

win32consoleをハックする方法

Windows上で、RSpecや Cucumberのカラー出力をしようとするとwin32consoleをインストールするようにアドバイスされます。

このモジュール自体は、日本語に対応している訳ではなさそうですが、Win32::Console::ANSI::IO#_convをハックする事で、出力文字をShift-JISに強制変更させます。


require "Win32/Console" 
require "kconv" 
....
module Win32
  module Console
    module ANSI
      class IO < IO
....
        def _conv(s)
          if @concealed
            s.gsub!( /\S/,' ')
          elsif @conv
            if EncodeOk
              from_to(s, cpANSI, cpOEM)
            elsif @@cp == 'cp932cp932'
              s = s.tosjis
            elsif @@cp == 'cp1252cp850'      # WinLatin1 --> DOSLatin1
....
      end
    end
  end
end

ただし、この方法はコンソールに出力する場合のみコード変換を行うため、リダイレクトを行う場合にはうまく行きません。ZenTestのautotest(RSpecの場合のautospec)は内部でリダイレクトを行っているため、うまく行きませんでした。

This entry was posted on Sun, 09 Aug 2009 14:43:00 GMT and Posted in . You can follow any any response to this entry through the Atom feed. You can leave a comments, Or a trackback from your own site.
Tags , , , , , ,


Trackbacks

Use the following link to trackback from your own site:
http://rails.to/trackbacks?article_id=japanese-feature-and-spec-on-windows&day=09&month=08&year=2009

Comments

Leave a response

Leave a comment