2010-09-10 2 views
4

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

Пример:

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" является "".

ответ

12

Try с присоединиться метод

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

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

+0

Нет ... это не сработало. Правильно ли синтаксис моей задачи? то есть «task: import =>: environment» –

+1

Да, синтаксис кажется правильным и может работать. Попробуйте без первого/я обновляю свой ответ. Потому что создается неправильное имя PathName. – shingara

+0

Это сработало! Благодаря!! –

1

Для справки:

Rails.root + "test/data.csv" 

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

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

также работает (вам действительно нужна «ведущая» косая черта).

Смежные вопросы