如何通过rake任务参数将csv文件或文件流或其他内容传递给我在远程应用程序上运行的rake任务?
所以我可以在文件中获取该文件的内容并使用它做一些事情。它不是一个大文件。
更新
我尝试了Luc的建议:
desc 'Test task'
namespace :app do
task :pipe_file => [:environment] do |t, args|
puts "START"
File.open('my_temp_file', 'w') do |f2|
while line = STDIN.gets
f2.puts line
end
end
puts "DONE"
end
end
所以当我跑:
cat tst.csv | bundle exec rake app:pipe_file
没有任何反应,空行打印
答案 0 :(得分:4)
您可以将文件内容传递给rake任务:
cat my_file | heroku run rake my_task
然后在你的任务中你需要先阅读STDIN:
STDIN.binmode
tmp_file = Tempfile.new('temp_file_prefix', Rails.root.join('tmp'))
tmp_file.write(STDIN.read)
tmp_file.close
Process tmp_file here.
puts tmp_file.path
tmp_file.unlink
希望它有所帮助!