【问题标题】:How do rails development and production database environments work?Rails 开发和生产数据库环境如何工作?
【发布时间】:2014-03-18 13:47:18
【问题描述】:

我有一个使用 Rails 3.2 中的开发环境创建和填充的数据库。我使用 git 和 phusion 乘客将数据库部署到服务器上。目前,服务器仍在运行开发数据库,​​因为它是已填充的数据库。我有两个问题:

1) 如果我将服务器切换到生产环境,我的所有数据都会传输过来吗?如果没有,如何将当前数据传输到生产数据库中?

2) 如果我使用开发数据库从我的个人机器推送更新到服务器,而服务器正在使用生产数据库,那么用户输入到生产数据库的所有数据都会保持不变吗?还是我必须将其配置为在我将项目从 git 拉到服务器时不擦除数据?

【问题讨论】:

    标签: ruby-on-rails git sqlite dev-to-production


    【解决方案1】:

    第一个问题

    如果您将环境更改为生产环境,它将使用config/database.yml 文件中配置的数据库。如果您想在生产中使用相同的数据库,您可以备份开发数据库并导入备份文件。

    第二个问题

    通过术语从我的个人计算机向服务器推送更新,我假设您正在谈论正在推送的代码更改,而不是任何与数据库相关的事情。使用 git 进行拉/推操作永远不会影响您与数据库交互的方式。生产数据库中来自用户的数据将保持不变。

    【讨论】:

    • 目前,当我在我的个人计算机上运行git push origin master,然后在我的服务器计算机上运行git pull origin master 时,它确实包含了我在个人计算机上输入的所有数据机器。
    • 代码推送和拉取是独立于环境的,如果你将代码从本地推送到 git。 git pull from server 将合并代码而不考虑本地或远程服务器的环境
    【解决方案2】:

    1) 如果我将服务器切换到生产环境,我的所有数据都会传输过来吗?如果没有,如何将当前数据传输到生产数据库中?

    默认情况下一般不会。 database.yml 文件有一个用于开发、测试和生产的组。开发和测试往往是本地的,生产(希望)不会在您的本地机器上。

    2)如果我使用开发数据库从我的个人机器推送更新到服务器,而服务器正在使用生产数据库,那么用户输入到生产数据库的所有数据都会留在机智?还是我必须将其配置为在我将项目从 git 拉到服务器时不擦除数据?

    实际数据应保持完整,但请记住使您的迁移与那里的数据兼容。这里要注意的一件大事是在现有表中添加一个必填字段,而无需处理重新填充早期记录。这会破坏您的部署。

    您可以使用您环境的资源从生产中获取数据库/将其发回(我认为 Heroku 使用 pg:dump)。

    WRT 您对 GhostRider 回答的评论,您是否在开发中远程使用生产数据库?/您的部署在哪里?您的 database.yml 文件是什么样的? (请记住不要包含您的密码:D,我会在回复时更新答案)。

    【讨论】:

    • 我正在部署到一台 linux 机器上,该机器刚刚在我工作的本地网络上使用。我没有从默认更改 .yml 文件:生产:适配器:sqlite3 数据库:db/production.sqlite3 池:5 超时:5000 `
    • 尝试将db文件添加到.gitignore
    猜你喜欢
    • 2023-02-08
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多