2

rake 环境和控制台环境有什么区别?

我正在尝试使用带有 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 控制台或 cucumber 步骤时,它可以完美运行。它甚至可以与

> 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

种子.rb(简化)

load_fixture("path-to-csv-file")
4

0 回答 0