繁体   English   中英

Ruby-on-Rails Capistrano部署-数据库位置

[英]Ruby-on-Rails Capistrano deployment — database location

到目前为止,我一直在使用标准位置的数据库文件夹对我的应用程序进行测试部署。 在服务器上,它最终位于: project / current / db 显而易见的问题是,每次部署应用程序时,数据库都会被覆盖。 为了消除这种情况,我将数据库文件夹添加到:linked_dirs列表中,因此deploy.rb中的行变为:

append :linked_dirs, "db", "log", "tmp/pids", "tmp/cache", "tmp/sockets", "public/system"

使用此设置进行部署后,该应用程序将无法运行,并发出错误消息:

Showing /home/deploy/gps_monitor/releases/20190824124626/app/views/gps_messages/index.html.erb where line #14 raised:

SQLite3::SQLException: no such table: gps_messages

对新部署进行故障排除表明,新链接的db文件夹中缺少文件“ seeds.rb,schema.rb和迁移(文件夹)”。

Cap日志显示,首先克隆了存储库(将丢失的文件放置在project / current / db目录中,然后将该目录删除,并替换为project / shared / db的链接。

我想我可以找出某种解决方法,但是我认为会有防止这种问题的标准方法。 顺序应该是

1) clone the repo
2) create the project/shared/db folder
3) cp project/current/db/*  project/shared/db
4) rm project/current/db
5) create symlink

当然,我不是唯一一个经历过这种情况的人,传统的解决方案是什么?

Capistrano Version: 3.11.0 (Rake Version: 12.3.3)
Rails 6.0.0.beta3
ruby 2.6.2p47 (2019-03-13 revision 67232) [armv7l-linux-eabihf]

谢谢你的帮助。

尝试链接所需的文件而不是整个目录:

set :linked_files, fetch(:linked_files, [])+%W{db/somefile.yml db/another_file.sqlite}

并从linked_dirs数组中删除db

我上面的原始“序列”无效。 Seeds.rb,schema.rb和migration文件夹不得位于project / shared文件夹中,因为这将阻止后续部署更新数据库。

我通过将“ db / shared”添加到:linked_dirs列表中,并更改了database.yml以在db / shared / production.sqlite3中显示数据库,解决了此问题。

数据库位于: project / shared / db / shared / production.sqlite3

链接是:项目/当前/数据库/共享->项目/共享/数据库/共享

种子,模式和迁移全部位于原始位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM