Rails.root пуст в пользовательской задаче Rake в Rails 3.0 - PullRequest
4 голосов
/ 10 сентября 2010

Возможно, я пропустил это в документации по обновлению, но если я выведу "Rails.root" в консоль rails, я увижу корневой путь моего приложения. Но если я ссылаюсь на "Rails.root" в пользовательском задании Rake, оно пустое. Что мне не хватает? Заранее спасибо.

Пример:

namespace :admin do
    desc "Import some data"
    task :import => :environment do
        csv = Rails.root + "/test/data.csv"
        raise "#{csv} does not exit. Stopping task." if !File.exists?(csv)

        CSV.foreach(csv, :headers => :first_row) do |row|
            puts(row['id'])
        end
    end
end

Я получаю исключение каждый раз, потому что "Rails.root" равен "".

Ответы [ 2 ]

12 голосов
/ 10 сентября 2010

Попробуйте с методом соединения

csv = Rails.root.join('test/data.csv')

CSV станет Pathname вашего файла.

1 голос
/ 03 февраля 2012

Для справки:

Rails.root + "test/data.csv" 

также будет работать, это ведущий слеш, который портит все.

"#{Rails.root}/test/data.csv"

также работает (вам действительно нужен "ведущий" слеш там).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...