Rfm+RubyでFileMakerを操作するスクリプトをEXE化でござるの巻
ActiveScriptRuby+Exerbで、FileMakerアクセス用ライブラリ「Rfm」を使ったスクリプトをExerbでEXE化してみよー。
環境
- ActiveScriptRuby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
- Exerb 5.1.0 (1.8.7-p249対応版) http://sourceforge.jp/frs/index.php?group_id=85
- lardawge-rfm 1.4.0 (gem i lardawge-rfm)
ExerbとRubyGemsは相性が悪い?
via. http://twitter.com/bopper/status/7638207994
require 'rubygems' unless $Exerb require 'rfm'
これでEXE化して実行したときに「C:\lib\ruby」が勝手に作られるのを防止できる。
ExerbとRfmは相性が悪い?
「require 'rfm'」 だけではEXE化したときにRfmが正常に読み込めなかったので、
require 'rubygems' unless $Exerb require 'rfm' require 'rfm/utility' require 'rfm/factory' require 'rfm/result' require 'rfm/commands/database' require 'rfm/commands/layout' require 'rfm/commands/server'
という感じに各ファイルを明示的にロードした。Rfm固有の問題? gemでインストールしたTMailも同時に使ってみたがそっちは正常動作。
.exyファイルにpath:セクションを追加してfile:セクションにDLLを記述
via. http://d.hatena.ne.jp/snaka72/20091231/1262253107
1. ActiveScriptRuby付属のrb2exeをスタートメニューから起動。
2. GUI操作に「mkexy」コマンドでレシピファイル(.exy)を作成。
3. .exyファイルをテキストエディタで開き、path:セクションにDLLが存在するパスを追加する。
path: - C:\ruby\v187\lib\ruby\gems\1.8\gems\nokogiri-1.4.1-x86-mswin32\ext\nokogiri - C:\ruby\v187\bin
4. .exyファイルの末尾にRfm(やその他ライブラリ)が使うDLLファイルを追加。
ssleay32.dll: libeay32.dll: iconv.dll: libexslt.dll: libxml2.dll: libxslt.dll: zlib1.dll: