rake环境和控制台环境有什么区别?
我正在尝试使用带有rails 3.1.0的csv文件来播种mysql数据库。 它曾经是ActiveRecord :: Fixtures的一块蛋糕。不幸的是,csv fixture在rails 3.1中被折旧了。
所以我使用csv-mapper 0.5.1在我的config / initializers中编写了load_fixture.rb。但是,它不适用于
$ 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")