Правильное расположение файла импорта данных в Rails 3.1 (пользовательская задача rake) - PullRequest
4 голосов
/ 23 января 2012

Я пытаюсь запустить эту пользовательскую задачу 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 Ответ

8 голосов
/ 23 января 2012

Имена файлов относятся к каталогу, из которого вы выполняете задачу rake, а не к тому месту, где находится файл rake.Укажите абсолютный путь, включая каталог установки rails, например:

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

Не существует «правильного» расположения для импорта данных afaik, но каталог lib/tasks не должен быть этим.Для этого просто создайте выделенный каталог под корнем rails и укажите на него так же, как указано выше.

...