4

我正在尝试运行此自定义 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 目录)相同的目录中,这是正确的位置吗?

4

1 回答 1

8

文件名与执行 rake 任务的目录相关,而不是 rake 文件所在的目录。指定绝对路径,包括您的 rails 安装目录,如下所示:

File.open(File.join(Rails.root, "lib", "tasks", "users.txt"), "r")

导入数据 afaik 没有“正确”位置,但lib/tasks目录不应该是它。为此,只需在您的 rails 根目录下创建一个专用目录,并以与上述相同的方式指向它。

于 2012-01-22T21:43:37.053 回答