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