Ruby 在 Rails - 来自开发数据库的种子

Ruby on Rails - seed from development database

我现在已经部署我的应用程序到我的网站。在我的 Development ENV 中,我有一个名为 cities 的 table,包含 47K cities/records。我怎样才能 seed 所有这些城市到我的 Production ENV.

我只想做一次 seed 并且只针对 cities 数据库。

您可以使用 gem 例如 https://github.com/rroblak/seed_dump 转储所选 table 然后在生产服务器上 运行 RAILS_ENV=production rake db:seed 播种数据。

rake db:seed:dump MODELS=cities APPEND=true 看起来像您需要的命令 运行 将数据转储到种子文件中。

否则您可以将数据库 table 导出为 MySQL 转储并将其导入生产数据库。

你说你只需要在生产中做一次,但通常任何其他开发人员(或你自己)可能需要再做一次,所以我真的会把它变成一个种子文件或一个CSV.

以下是创建 CSV 文件然后将其导入生产环境的方法。

require 'csv'
attributes = %w{name country}

CSV.open('cities.csv','w') do |csv|
    csv << attributes

    City.find_each do |city|
      csv << attributes.map{ |attr| city.send(attr) }
    end
  end
end