rails 3:在Heroku应用程序中将大型种子列表(20,000个单词)加载到表(使用rake种子)的最简单方法?

jpw*_*ynn 3 ruby-on-rails

在我的本地开发机器上,我有一个单词列表,每行一个单词,20,000个单词,我需要加载到一个新表中我称之为Wordlist.

我需要在几个Heroku应用程序上创建完全相同的表,它没有本地文件存储.

表模式只是id:integer和word:string

我已经阅读了很多关于使用seed.rb的文章...但是我们还没有看到如何使用我的开发机器上的文件中的单词列表,将列表加载到我的本地开发机器上的表格中远程Heroku应用程序实例.

任何想法,将不胜感激!

Chr*_*tto 6

我会把那个单词列表粘在一个csv中,每一行都有一个单词.那应该花2分钟.然后使用FasterCSV gem迭代你保存在/ lib/data中的csv.您可以将其粘贴到/db/seeds.rb中.

seeds.rb

FasterCSV.foreach("#{RAILS_ROOT}/lib/data/words.csv", :headers => :first_row) do |row|
  Word.create_by_name(row[0])
end
Run Code Online (Sandbox Code Playgroud)

运行你的rake db:seed就是这样.顺便说一下:headers =>:first_row只是意味着如果你有一个标题就跳过第一行.如果你不把这部分留下来.

对于远程文件:

require 'open-uri'
FasterCSV.foreach(open("http://remotehost.com/words.csv"), :headers => :first_row) do |row|
  Word.create_by_name(row[0])
end
Run Code Online (Sandbox Code Playgroud)