rails to Niigata
Ruby on RailsアプリケーションをBDDで開発する際の標準となった感のあるCucumberとRSpecですが、フィーチャやスペックを日本語で記述することになります。
Mac OS XやLinuxでは全く問題にならないのですが、Windowsの場合、UTF-8の出力をコンソールに表示する事が問題となります。
NetBeansを使えば、出力ウィンドウでUTF-8を表示可能ですが、特定のフィーチャを指定して実行する機能などがないため、実用てきではありません。
コマンドプロンプトのコードページを65001(UTF-8)にする方法もあるようですが、日本語表示フォントの設定がうまく行かなかったり、コマンド入力が正しく実行されなかったりして、手元の環境では使用できませんでした。
何度か試しているうちに気がついたのが、設定の順序です。次の方法だとうまく行くようです。
1は、コマンドプロンプトのウィンドウの左上をクリックして、「プロパティ」を選択し、「フォント」の設定を「MSゴシック」に変更します。
2は、コマンドプロンプトでchcp 65001と入力して、65001(UTF-8)に変更します。
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)は内部でリダイレクトを行っているため、うまく行きませんでした。
Powered by Publify | Photo Startup stock photos