【问题标题】:Correct location for data import file in Rails 3.1 (custom rake task)Rails 3.1 中数据导入文件的正确位置(自定义 rake 任务)
【发布时间】:2012-02-16 08:58:30
【问题描述】:

我正在尝试运行此自定义 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 目录),那个位置正确吗?

【问题讨论】:

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


    【解决方案1】:

    文件名与您执行 rake 任务的目录相关,而不是 rake 文件所在的位置。指定绝对路径,包括你的 rails 安装目录,像这样:

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

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

    【讨论】:

    • 我在尝试您的解决方案时收到此错误:Not a directory - /Users/larson/Dev/myapp/lib/tasks/users.txt/r,r 应该在那里吗?
    猜你喜欢
    • 2017-05-03
    • 2012-12-28
    • 2014-08-10
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多