如何在Rails Rake任务中使用File.open?

5

我需要创建一个循环任务,从外部文本文件中创建(或编辑)产品记录。在irb内部:

>> f = File.open(<filename>) # file in same directory path

没有问题。

但是当粘贴到Rake任务文件中时,脚本总是会出现“文件未找到”的错误。(Rails 3.1,Ubuntu。)

namespace :sap do
  desc "uploads data from raw SAP file"
  task :upload => :environment do
     f = File.open("sap_pnlist_20111010a.csv")
     records = f.readlines
     records.each {|row|
     ... etc etc ...
     }
  end
end

有什么建议?

6
如果文件在Rails根目录内,可以使用Rails.root.join来指定完整路径。 - Jordan Running
好了,搞定了。谢谢,乔丹! - Brian Piercy
为什么不把这个作为一个答案呢? - Maarten
1个回答

6
如果文件在Rails根目录内部,请使用
Rails.root.join('grandparent_dir', 'parent_dir', 'file.txt')

如果文件不在你的Rails根目录下,你必须给它完整路径


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接