mieki256's diary



2013/07/30(火) [n年前の日記]

#2 [ruby] Ocraでexe化しようとしてハマり始めたり

Ocra を使って Rubyスクリプトをexeファイルにしてみたのだけど。実行してみるとエラーが。

Rubyスクリプトと同じフォルダに置いてある外部ファイルを読み込んで処理をするところで、「そんなファイルは見つからねえよ」と言われる。エラーメッセージを眺めると、ユーザアカウントの作業用フォルダ以下に該当ファイルが無いぞ、と言われているようで。

Ocra で exe化したファイルを実行しようとした場合、exeに同梱されているファイル群を、一旦作業用フォルダに展開して、そこにある Rubyスクリプトを動かす仕組みだろうと想像するのだけど。その、同梱されるファイルの中に、スクリプトが読み込もうとする外部ファイルは含まれていないので、「んなファイル見つからねえよ」と言われるのだろうと。

解決策を検索してみたところ、いくつか策はありそうで。 以下のページで解説されてました。ありがたや。

_覚え書き: ocra による Ruby の EXE 化
_巳2已己のメモ帳 Ocraの豆知識 [環境変数:OCRA_EXECUTABLE 編]

それにしても、特に何もしなくても、Ocra で exe化したソレは、DXRubyで使う画像ファイルの類が読み込まれているのが不思議。前述の事例を鑑みると、画像ファイル群も同様に見つからないと言われそうなものだけど。DXRuby の側で、件の環境変数を覗いてパスを変更しつつ処理をしているんだろうか…?

__END__ と DATA についてもハマった。 :

Rubyスクリプトの最後のほうに「__END__」と書いてからその下にテキスト等を書けば、DATA.read(), DATA.each_line 等で読み込むことができるらしく。

であれば、前述の外部ファイルも、「__END__」以下に書いてしまえば…。と思ったけど甘かった。その状態にすると、「DATA」が使えない。

Rubyのドキュメントを眺めたら、どうも require で呼ばれた場合は、呼ばれた側のソースの一番下にある「__END__」以下は対象にならず、呼び出した側・実行しているスクリプトソースの中に「__END__」があることを期待して動くらしい。

以上です。

過去ログ表示

Prev - 2013/07 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project