レーキ環境とコンソール環境の違いは何ですか?
Rails 3.1.0でcsvファイルを使用してmysqlデータベースをシードしようとしています。以前は ActiveRecord::Fixtures を使えば簡単でした。残念ながら、csv フィクスチャは rails 3.1 で廃止されました。
そこで、csv-mapper 0.5.1 を使用して config/initializers に load_fixture.rb を書きました。ただし、それは動作しません
$ rake db:seed
シード コードはエラーなしで実行されます。データをロードしないだけです。
シード コードを Rails コンソールまたはキュウリ ステップにコピーすると、問題なく動作します。それはでも動作します
> Rails.application.load_seed
レールコンソールで。これはどのように起こりますか?
load_fixture.rb:
require 'csv-mapper'
include CsvMapper
def load_fixture(file)
fname = File.basename file.chomp(File.extname file)
modelname = fname.camelize.singularize.constantize
results = import(file) do
map_to modelname
after_row lambda{|row, item| item.save! }
start_at_row 1
read_attributes_from_file
end
end
seed.rb (簡略化)
load_fixture("path-to-csv-file")