Rails.application.load_seed работает, но rake db: seed не работает - PullRequest
2 голосов
/ 11 сентября 2011

В чем разница между средой rake и консольной средой?

Я пытаюсь заполнить базу данных mysql, используя файл csv с rails 3.1.0.Раньше это было очень просто с ActiveRecord :: Fixtures.К сожалению, крепление CSV амортизируется в рельсах 3.1.

Итак, я написал load_fixture.rb в моей конфигурации / инициализаторах, используя csv-mapper 0.5.1.Однако он не работает с

$ rake db:seed

. Начальный код работает без ошибок.Он просто не загружает никаких данных.

Когда я копирую начальный код в консоль rails или шаг огурца, он работает безупречно.Он даже работает с

> Rails.application.load_seed

в консоли rails.Как это может случиться?

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