这可能是一个菜鸟问题,但到目前为止我找不到解决方案。 我正在本地开发一个使用SQLite的Rails应用程序,我已经设置了一个本地Git仓库,而dotcloud push命令正在使用它。在本地我使用开发环境,在DotCloud上它自动使用prod env,这很棒。问题是,每次我推动我的DotCloud上的prod数据库都会丢失,无论对代码库的更改有多么微小,我都必须运行'rake db:migrate'来重新设置它。我本地没有prod db,只有dev和test dbs。
答案 0 :(得分:3)
按照here所述将数据库放在〜/ data /中,并在部署时创建符号链接:
ln -s ~/data/production.sqlite3 ~/current/db/production.sqlite3
答案 1 :(得分:2)
您应该不在版本控制中拥有您的SQLite数据库文件。如果您有多个开发人员,那么每次有人合并最新更改时都会发生冲突。正如您所注意到的那样,它也将被推向生产阶段。
您应该将db文件添加到.gitignore
。如果它已经在版本控制中,您可能必须首先git rm
该文件。
答案 2 :(得分:0)
问题在于,每次部署时,旧版本的已部署应用程序都会被擦除,并替换为新代码,并且您的sqlite数据库通常位于您的应用程序文件中。我不是一个dotcloud用户,我不知道它是否有效,但您可以尝试设置一个共享文件夹,将生产数据库放在服务器上,这是在rails应用程序之外。
答案 3 :(得分:0)
不确定如何在DotCloud.com上设置git,但我假设你有一个裸推出的repo,并且在执行合适的git hook时从裸机中获取另一个repo。您需要了解是否可以配置最后一次使用我们的合并策略。