ruby + qtruby + sqlite3 アプリケーションを ocra で Windows インストーラーにパッケージ化しようとしています。
データベースに接続するコードを追加するまで、すべてがうまくいきます。
スニペットは次のとおりです。
require 'Qt4'
require 'rubygems'
require 'active_record'
dbconfig = YAML::load(File.open('src/config/database.yml'))['development']
ActiveRecord::Base.establish_connection(
:adapter => dbconfig['adapter'],
:database => dbconfig['database']
)
class Category < ActiveRecord::Base
end
Category.find(:all)
exit if Object.const_defined?(:Ocra)
...
このコードが実行され、ocra は単一の実行可能ファイルを作成できますが、セットアップ ファイルを作成しようとすると、次のエラーが表示されます。
=== Running InnoSetup compiler ISCC
Error in D:\Workspaces\Ruby\TestGui\ocratemp.iss: Impossibile accedere al file. Il file Þ utilizzato da un altro processo.
Compile aborted.
ERROR: InnoSetup installer creation failed: ISCC failed to run. Is the InnoSetup directory in your PATH?
rake aborted!
エラーはイタリア語です。申し訳ありませんが、「ファイルにアクセスできません。ファイルは現在別のプロセスで使用されています」と訳されます。
これは、インストーラーを生成するために使用されるコマンドです。
ocra --chdir-first --no-lzma --no-autoload --innosetup testGui.iss gui.rb src/db/development.db src/config/database.yml
sqlite に接続するコード ブロックをコメントアウトすると、インストーラーが正しく作成され、テスト マシンで正しく使用できるようになります。sqlite に接続する前にexit if...ブロックを移動すると、結果の実行可能ファイル/インストーラーに sqlite ライブラリがなく、ターゲット マシンで実行できません。
エラーは sqlite への接続が閉じられていないことに関連していると思いますが、おそらく他に何か不足しています。
ありがとう