2

这可能是一个菜鸟问题,但到目前为止我找不到解决方案。我正在本地开发一个使用 SQLite 的 Rails 应用程序,我已经设置了一个本地 Git 存储库,并且 dotcloud push 命令正在使用它。在本地我使用开发环境,在 DotCloud 上它自动使用 prod 环境,这很棒。问题是每次我在 DotCloud 上推送我的产品数据库时都会丢失,无论代码库的更改多么微小,我都必须运行“rake db:migrate”来重新设置它。我在本地没有产品数据库,只有开发和测试数据库。

4

4 回答 4

3

将您的数据库放在 ~/data/ 中,如此处所述 并在部署时创建一个符号链接:

ln -s ~/data/production.sqlite3 ~/current/db/production.sqlite3
于 2012-10-03T20:19:18.423 回答
2

应该将 SQLite 数据库文件放在版本控制中。如果您有多个开发人员,那么每次有人合并最新更改时都会发生冲突。正如您所注意到的,它也将被推向生产。

您应该将 db 文件添加到.gitignore. 如果它已经在版本控制中,您可能必须git rm首先访问该文件。

于 2011-05-29T15:16:40.533 回答
0

问题是每次部署时,已部署应用程序的旧版本都会被擦除,并替换为新代码,并且您的 sqlite 数据库通常在您的应用程序文件中。我不是 dotcloud 用户,我不知道它是否有效,但您可以尝试设置一个共享文件夹,将生产数据库放在服务器上,该服务器位于您的 rails 应用程序之外。

于 2011-05-29T09:37:57.637 回答
0

不太确定 git 在 DotCloud.com 上是如何设置的,但我假设有一个你推送到的裸仓库和另一个在执行合适的 git 钩子时从裸仓库中提取的仓库。您需要确定是否可以配置最后一次拉取以使用我们的合并策略。

于 2011-05-29T11:40:44.203 回答