Rails - 当我推送到生产环境时我会丢失我的开发数据库吗?
Rails - Will I lose my development database when I push to production?
我知道这可能是个愚蠢的问题但是...
简单地说,我有一个应用程序在开发模式下有数百条记录的数据库。当我推送到生产环境并部署到互联网上时,我是否会丢失我的数据库并且必须在生产模式下全部重做?
只是为了安全!
某种程度上,您不会丢失数据本身,它存储在您为开发环境配置的数据库中,但您的生产环境可能配置了另一个数据库,该数据库将为空。
您可以从开发环境复制数据库并配置 rails 以在生产环境中使用它。取决于您使用的数据库类型:mysql、sqlite 等。
您的生产数据库未被推送。当您在生产服务器上 运行 rake exec db:migrate 时,将创建一个包含您的模式的空数据库。
如果您想自动将开发数据库记录添加到生产数据库,有一个名为 yaml_db 的 gem。它易于使用,适用于 MySQL 和 PostgreSQl。 https://github.com/yamldb/yaml_db。
在gem文件中:
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
我知道这可能是个愚蠢的问题但是...
简单地说,我有一个应用程序在开发模式下有数百条记录的数据库。当我推送到生产环境并部署到互联网上时,我是否会丢失我的数据库并且必须在生产模式下全部重做?
只是为了安全!
某种程度上,您不会丢失数据本身,它存储在您为开发环境配置的数据库中,但您的生产环境可能配置了另一个数据库,该数据库将为空。
您可以从开发环境复制数据库并配置 rails 以在生产环境中使用它。取决于您使用的数据库类型:mysql、sqlite 等。
您的生产数据库未被推送。当您在生产服务器上 运行 rake exec db:migrate 时,将创建一个包含您的模式的空数据库。
如果您想自动将开发数据库记录添加到生产数据库,有一个名为 yaml_db 的 gem。它易于使用,适用于 MySQL 和 PostgreSQl。 https://github.com/yamldb/yaml_db。
在gem文件中:
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