在远程应用程序上运行rake任务,使用本地计算机上的文件

时间:2014-07-03 13:17:31

标签: ruby-on-rails ruby rake

如何通过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

没有任何反应,空行打印

1 个答案:

答案 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

希望它有所帮助!