Rails 3.1中的数据导入文件的正确位置(自定义rake任务)

时间:2012-01-22 20:22:56

标签: ruby-on-rails ruby-on-rails-3.1 rake data-import

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

1 个答案:

答案 0 :(得分:8)

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

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

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