2012-01-24 9 views
0

私は(3.1)レールにデータをインポートしようとしていると私は(Mac上のExcelで生成された)CSVファイルを解析するために、このrakeタスクを作成しているトラブルレールへのデータのインポート、奇妙なルーピング

desc "Import users." 
    task :import_users => :environment do 
    File.open("users.csv", "r").each do |line| 
     id, name, age, email = line.strip.split(',') 
     u = User.new(:id => id, :name => name, :age => age, :email => email) 
     u.save 
    end 
    end 

しかしとき私はレーキタスクを実行し、CSVファイルの最初の行だけがインポートされます。最初のファイル以外のファイル内のすべての行を繰り返しません。なぜ誰かが私に言うことができますか?

答えて

1

ルビーを使用して、テキストファイルの任意の種類を解析する、それはRubyが好きなフォーマットだことを確認するために、および/または行末エンコーディングを確認してください。

この場合、RubyはMac OS Xの行終了形式を嫌っていましたが、Unixのものが好きでした。

1

確かにわかりませんが、私はここで何が起こっているかは、それぞれが各行ではなく各ファイルを表すことだと思います。ファイルが1つしかないため、期待通りに動作しない可能性があります。私の代わりにCSVパーサを試してみた:

CSV.foreach("users.csv") do |line| 
     id, name, age, email = line 
     u = User.new(:id => id, :name => name, :age => age, :email => email) 
     u.save 
end 
+0

答えてくれてありがとうございました。私の問題は実際に行末でした(MacのExcelではRubyがうまくいく方法でそれらをエンコードしません) –