我正在尝试将带有 ocra 的 ruby + qtruby + sqlite3 应用程序打包到 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 的连接有关,但也许我遗漏了其他内容。
谢谢