我正在尝试运行此自定义rake任务以将数据导入我的Rails 3.1应用程序:
desc "Import users."
task :import_users => :environment do
File.open("users.txt", "r").each do |line|
name, email, age = line.strip.split("\t")
u = User.new(:name => name, :email => email, :age => age)
u.save
end
end
我将文件保存为import_users.rake并将其放在我的应用程序的lib / tasks目录中。
但是,当我尝试在命令行中运行rake import_users
时,我收到此错误:
No such file or directory - users.txt
我将users.txt放在与.rake文件(lib / tasks目录)相同的目录中,这是正确的位置吗?
答案 0 :(得分:8)
文件名相对于执行rake任务的目录,而不是rake文件所在的目录。指定绝对路径,包括rails安装目录,如下所示:
File.open(File.join(Rails.root, "lib", "tasks", "users.txt"), "r")
导入数据afaik没有“正确”的位置,但lib/tasks
目录不应该是它。只需在rails根目录下创建一个专用目录,然后以与上面相同的方式指向它。