rubyで出来たスクリプトをWindowsのEXE形式にしてくれる。起動が楽になって嬉しい
RubyをEXEにするツールで今まで動かなかった問題が解決したら嬉し。ExeRbはめんどくさかった。
インストール
gem install ocra
もちろん ms-win 版Ruby専用( mswin32 か mingw だけ、CygwinはEXE化できたど、実行がダメっぽい cygwin.dll が無いからかな)
使い方(超簡単)
ocra sample.rb
これで、sample.exe が作成される
exe化すると便利ね
自動化スクリプトに組み込みやすくなったわ
おまけCygwin環境での注意
cygwin ruby は EXE化出来ても実行時にこけるようなのであきらめた
かわりにMingw版Rubyを起動するラッパーをCygwin版Rubyで書いた
/usr/local/bin/ocra
1 #!/usr/bin/env ruby 2 KCODE='u' 3 require "kconv" 4 #cygwin ruby のある環境変数をリセットして 5 #純粋にmingw のRuby環境で、ocraを起動し直す 6 cmd = 'PATH=''; C:/Users/takuya/apps/ruby-mingw32/bin/ocra ' + $*.join(' ') 7 IO.foreach("| #{cmd} 2>&1 "){|line|puts line.kconv(Kconv::UTF8,Kconv::SJIS)}
2011-12-08
OCRAのファイルには記述ミスがある。ので、場当たり的に対応が必要だった。
ocra-1.3.0/bin/ocra
SEPARATOR_PAT = %r"[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]"
File::ALT_SEPARATORがNullのとき nil をRegexp.quato して失敗する。なので次のように変更した。
18 SEPARATOR_PAT = %r"[#{Regexp.quote File::SEPARATOR}]" unless File::ALT_SEPARATOR 19 SEPARATOR_PAT = %r"[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]" if File::ALT_SEPARATOR