2

レーキ環境とコンソール環境の違いは何ですか?

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")
4

0 に答える 0