[Ruby][備忘録][Windows]Rubyの実行ファイルを作成するExerbとOcraを試してみた
あらすじ
Rubyが入っていないWindows環境でも(要は自分以外)Rubyスクリプトを実行したいのでexe化する方法を模索する。というか、昔模索した後の結果を今更まとめる。
対象プロジェクト
win32oleを使ってExcelファイルを読み込みシートを取得し連番で吐くというRubyスクリプトをexe化。ソースはこんな感じ。
出力結果はこう。
$ ruby getSheetname.rb Book1.xlsx
Book1.xlsx
---
Sheet1
Sheet2
Sheet3
Sheet4
Sheet5
---
end.
ExerbとOcraをためしてみた。
Exerb(ダメだった)
最新は5.4.0らしいが、今回はなんでか4.3.0を入れていた。(理由不明)
手順(失念)
- [http://exerb.sourceforge.jp/:title]よりExerbをダウンロード後、setup.rbを実行?だけでいいんだっけ?
- mkexy.batとexerb.batがRubyのbinに入るはず
- exyファイルを作成する
$ mkexy.bat getSheetname.rb
---
end.
- 成功するとgetSheetname.exyというファイルが作成される(GemfileにおけるGemfile.lockのようなもん?)
# Generated by mkexy
# on 2012-02-15 22:05
general:
startup: getSheetname.rb
core: cui
kcode: none
file:
getSheetname.rb:
win32ole.so:
file: C:/rubies/Ruby/lib/ruby/1.8/i386-mswin32/win32ole.so
type: extension-library
nkf.so:
file: C:/rubies/Ruby/lib/ruby/1.8/i386-mswin32/nkf.so
type: extension-library
kconv.rb:
file: C:/rubies/Ruby/lib/ruby/1.8/kconv.rb
rational.rb:
file: C:/rubies/Ruby/lib/ruby/1.8/rational.rb
date/format.rb:
file: C:/rubies/Ruby/lib/ruby/1.8/date/format.rb
date.rb:
file: C:/rubies/Ruby/lib/ruby/1.8/date.rb
prettyprint.rb:
file: C:/rubies/Ruby/lib/ruby/1.8/prettyprint.rb
pp.rb:
file: C:/rubies/Ruby/lib/ruby/1.8/pp.rb
- exyファイルをもとにexeファイルを作成する
$ exerb.bat getSheetname.exy
- 特にエラーも出ず、exeファイルも生成されたが…実行時にエラー
プロシージャ エントリ ポイント rb_during_gc がダイナミックリンクライブラリ getSheetname.exe から見つかりませんでした。
http://ruby.11.n6.nabble.com/ruby-dev-35318-rb-during-gc-td3526996.html:title
これ? んー何かコマンドが足りない? 手がかりが少なそうなので、もう一つのツールを当たってみる事に…。
Ocra
バージョンは1.3.0
手順
- gemでインストール
$ gem install ocra
- ocraコマンドでexe化
$ ocra.bat getSheetname.rb
=== Loading script to check dependencies
---
end.
=== Building getSheetname.exe
=== Adding user-supplied source files
=== Adding ruby executable ruby.exe
=== Adding library files
=== Compressing 2113827 bytes
=== Finished building getSheetname.exe (615866 bytes)
これで終わり。ワンコマンドでいける分、手順的にはOcraの方が早いか。(他のメリット・デメリットはおいといて……)