[英]Process CSV files in location relative to rake task
我有一個rake
任務和需要處理的CSV文件。 它們位於lib\\tasks
目錄的子目錄中:
\foo
one.csv
two.csv
...
foo.rake
任務:
task foo: :environment do
# for each file in directory
Dir.foreach("./*.csv") do |file| # not valid
# process CSV file's content
CSV.foreach(file, {:headers => true, :col_sep => ";"}) do |row|
...
end
end # Dir
end # task
如何引用與rake任務相關的文件?
我需要考慮更多,我認為結合File.join
和Dir.glob
將允許您處理所有的csv文件:
require "csv"
foo_dir = File.join(Rails.root, "lib", "tasks", "foo")
task foo: :environment do
# for each file in directory
Dir.glob(foo_dir + "/*.csv") do |csv_file|
# process CSV file's content
CSV.foreach(csv_file, {:headers => true, :col_sep => ";"}) do |row|
#...
end
end # Dir
end # task
編輯:正如@craig在下面的注釋中指出的那樣,可以通過使用File.dirname
和__FILE__
更加簡潔地完成此操作:
require "csv"
task foo: :environment do
# for each file in directory
Dir.glob(File.dirname(__FILE__) + "/*.csv").each do |file|
# process CSV file's content
CSV.foreach(csv_file, {:headers => true, :col_sep => ";"}) do |row|
#...
end
end # Dir
end # task
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.