【问题标题】:Rails - Will I lose my development database when I push to production?Rails - 当我投入生产时,我会丢失我的开发数据库吗?
【发布时间】:2015-05-24 05:20:16
【问题描述】:

我知道这可能是个愚蠢的问题,但是......

简单地说,我有一个应用程序,其数据库包含数百条处于开发模式的记录。当我推送到生产环境并部署到 Internet 上时,我是否会丢失我的数据库并且必须在生产模式下重做这一切?

只是为了安全!

【问题讨论】:

    标签: ruby-on-rails ruby database development-environment production-environment


    【解决方案1】:

    您不会丢失数据本身,这些数据存储在您为开发环境配置的数据库中,但您的生产环境可能会配置另一个数据库,该数据库将为空。

    您可以从开发环境中复制数据库并配置 Rails 以在生产环境中使用它。取决于您使用哪种数据库:mysql、sqlite 等。

    【讨论】:

    • 所以我可以复制开发数据库以用于生产?会不会有任何数据丢失或性能问题?
    • 是的,如果是 mysql,您导出并重新导入它。在服务器上,您可能需要稍微调整 mysql.conf 以获得最佳性能。
    【解决方案2】:

    您的生产数据库未推送。当您在生产服务器上运行 rake exec db:migrate 时,将创建一个包含您的架构的空数据库。

    如果您想自动将开发数据库记录添加到生产数据库,可以使用名为 yaml_db 的 gem。它易于使用并且适用于 MySQL 和 PostgreSQl。 https://github.com/yamldb/yaml_db

    在gemfile中:

    gem 'yaml_db'
    

    然后,在您的控制台中

    $ bundle install
    
    rake db:data:dump   ->   Dump contents of Rails database to db/data.yml
    rake db:data:load   ->   Load contents of db/data.yml into the database
    

    查看规范了解所有详细信息。

    已编辑:添加

    RAILS_ENV=development bundle exec rake db:data:dump
    RAILS_ENV=production bundle exec rake db:data:load
    

    【讨论】:

    • 所以我最好先部署我的网站,然后将我的数据库记录添加到生产数据库中?还是通过 yaml_db gem 将开发数据库转移到生产环境更好?另外,如果我转移,会有丢失数据的风险吗?
    • 是的。先部署。耙出所有需要耙的东西,并确保您的应用程序已成功部署和运行。不会有数据,但一切正常。然后,使用 yaml_db gem 将文件复制到 yaml 转储文件。您的源数据库(开发)不会被修改,但如果它让您感觉更舒服,请务必在开始该过程之前进行备份。
    • 我想我明白你为什么问上面的问题了。这可能是一个微妙的点,但很重要——您在开发环境中转储文件并在生产环境中加载文件。宝石很好,但过程并不简单。我使用它是因为我有很多开发表,其中包含我不想在生产中重新输入的数据。
    • 在答案中添加了 yaml_db 使用的明确说明。
    • 哇!谢谢瓦莱丽!真的很有帮助,消除了我的困惑:)
    猜你喜欢
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多