gpt4 book ai didi

ruby-on-rails - ocra 编译的 Rails 应用程序的数据库设置

转载 作者:行者123 更新时间:2023-12-03 22:49:37 25 4
gpt4 key购买 nike

我正在尝试打包一个 rails (3.2) 应用程序以在 Windows 机器上运行,我正在使用 OCRA 将应用程序“编译”为一个 exe。在反复敲打我的 table 后,我设法让应用程序编译并运行,但我还有一个问题;应用程序的数据库也打包在 .exe 中,因此当应用程序运行和运行(可以创建和检索新记录)时,它只是临时的,当 exe 停止时,对数据库的任何更改都会丢失。

所以我想我需要做的是让数据库位于应用程序外部,因此它将位于 exe 外部。但我还没有设法做到这一点。我尝试将 database.yml 中的数据库路径更改为几个不同的值,但我尝试过的任何方法都不起作用。我所看到的连接到外部数据库的示例都显示了连接到远程主机而不是本地文件。
我想要的是数据库文件与exe位于同一文件夹中。

编译后的app在生产模式下运行,这是我用来构建exe的ocra命令;

ocra myapp\script\rails myapp --add-all-core --gemfile myapp\Gemfile --no-dep-run --gem-full --chdir-first -- server -e production

database.yml 基本上是创建应用程序后的样子
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000

我试过设置 database:只是 production.sqlite../production.sqlite然后在运行之前将数据库文件放在与编译的 exe 相同的文件夹中,但这没有用。
我非常不熟悉设置不同的数据库,所以我确定我在这里遗漏了一些关键点!

最佳答案

我终于在 google-groups discussion 中找到了答案关于另一个与 ORCA 相关的问题,它恰好包含我需要的 database.yml 配置。

要使 OCRA 编译的 exe 外部的数据库,使数据库文件与 .exe 位于同一目录中,请设置 database: database.yml 中的参数为此;

<%= File.expand_path('../production.sqlite3', ENV["OCRA_EXECUTABLE"]) %>

我编译的应用程序在生产模式下运行,所以这就是我的 database.yml 部分的外观;
production:
adapter: sqlite3
database: <%= File.expand_path('../production.sqlite3', ENV["OCRA_EXECUTABLE"]) %>
pool: 5
timeout: 5000

这现在工作得很好,我可以运行 app.exe 在数据库中创建一个新条目,然后终止 app.exe。当我再次运行 app.exe 时,对数据的更改仍然存在。

关于ruby-on-rails - ocra 编译的 Rails 应用程序的数据库设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18408330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com