Rails.root在Rails 3.0中的自定义Rake任务中为空

JP *_*son 4 ruby rake ruby-on-rails

也许我在升级文档中错过了这个,但是如果我在rails控制台中输出"Rails.root",我会看到我的应用程序的根路径.但是如果我在自定义Rake任务中引用"Rails.root",它就是空的.我错过了什么?提前致谢.

样品:

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
Run Code Online (Sandbox Code Playgroud)

我每次都会得到一个例外,因为"Rails.root"是"".

shi*_*ara 12

尝试使用join方法

csv = Rails.root.join('test/data.csv')
Run Code Online (Sandbox Code Playgroud)

csv成为Pathname你的文件.