RubyGems を使ってる Rubyスクリプトを Exerb で Windows実行形式にしても、LoadError になって起動しない。
require 'rubygems' puts 'Hello!'
Rubyで実行すれば普通に動きます。
exyファイル作成後 exerbコマンドで実行形式にし実行した場合にエラー
rubygems.rb:349:in `clear_paths': no such file to load -- rubygems/specification (LoadError) from rubygems.rb:1235
実行環境
恐らくは autoload の影響かと思われ、"C:\Program Files (x86)\ruby-1.8\lib\ruby\site_ruby\1.8\rubygems.rb" の 1235行目で Gem.clear_paths を実行し、その際 349行目で Gem::Specification.reset を実行、 1141行目で autoload 設定していた rubygems/specification をロードしようとしてエラーになるのでしょう。
一応先に require しておけば回避できますが、ちょっと ad hoc に過ぎる。
module Gem; VERSION = '1.8.5'; end require 'rubygems/specification' require 'rubygems' puts 'Hello!'
あとは rubygems.rb の autoload 設定を require に書き換えるとかかな。ちなみに VERSION の値には使ってる gem のバージョンを書くべきでしょう、今、gem のバージョンと ruby のバージョンがちょうど似かよってるところで混乱しないよう注意。
参考、ML exerb-developer 保存書庫より