Rails利用Yaml在不同的环境与数据库之间传递数据

Sometimes, you cannot just seed your Rails database. This could be due to the complexity of the data itself, which may turn the creation of your seeds.rb file into a pure nightmare. In such cases, one of the possible solutions is to process all your data manually, through your web app UI, for example.

However, how would you make the data available to your application in the production environment ? Furthermore, you may not be able to cut off your production server while you make the necessary changes.

Fortunately, there is a neat solution to this problem. It’s a gem called 'yaml_db', that provides an intermediary dump format for your data ( by default, it outputs and reads data from db/data.yml ), and two very helpful commands.

How to use it ?

Add this line to your gemfile :

gem 'yaml_db'

Run bundler :

bundle

To dump your data :

bundle exec rake db:data:dump

To load your data : bundle exec rake db:data:load You can specify the environment using RAILS_ENV variable. The following example dumps data from the development database and pushes it to the production db :

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

As a side note, I found this gem to be particularily handy when I have to transfer data from my localhost ( for example ) to a heroku instance. Assuming that you have dumped your database, properly added db/data.yml to the repository, and updated your heroku app with your latest code version, all you have to do is to run the following command :

heroku run bundle exec rake db:data:load

Please note that this method doesn’t reset your data but rather merges your actual database with data.yml content. Be careful not to import it more than once !

You can find more informations about yaml_db in it’s official GitHub repo :

http://github.com/ludicast/yaml_db

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值