Create a tempfile without opening it in Ruby

前端 未结 4 2001
悲&欢浪女
悲&欢浪女 2021-01-04 21:11

Is there a way to create a tempfile, without having it opened? I have to run an executable, redirect it\'s output to a file, and then read & parse that. Everything creat

相关标签:
4条回答
  • 2021-01-04 21:30

    Is using FileUtils.touch acceptable solution? You can touch a file and delete it once you are done with whatever you want.

    0 讨论(0)
  • 2021-01-04 21:32

    You can also use Dir::Tmpname

    Dir::Tmpname.create('your_application_prefix') { |path| puts path }
    

    path will contain unique path

    See https://github.com/ruby/ruby/blob/ruby_1_9_3/lib/tmpdir.rb#L116

    0 讨论(0)
  • 2021-01-04 21:35

    You may want to use pipes.

    If the executable is started from your ruby program, consider using IO.popen.

    If they're different processes, you can try named pipes.

    0 讨论(0)
  • I didn't get an error:

    Andrew-Grimms-MacBook-Pro:~ agrimm$ irb
    >> require "tempfile"
    => true
    >> tempfile = Tempfile.new("temporary_file.txt", "/tmp")
    => #<File:/tmp/temporary_file.txt20110622-648-pkynjw-0>
    >> tempfile.close
    => nil
    >> system("echo foo > #{tempfile.path}")
    => true
    >> system("cat #{tempfile.path}")
    foo
    => true
    >> tempfile.path
    => "/tmp/temporary_file.txt20110622-648-pkynjw-0"
    >> exit
    Andrew-Grimms-MacBook-Pro:~ agrimm$ cat /tmp/temporary_file.txt20110622-648-pkynjw-0
    foo
    

    Then again, the temporary file doesn't seem awfully temporary.

    Does the error happen with all programs, or just a specific program? Also, can you post the code that causes the problem, and what error backtrace you get?

    0 讨论(0)
提交回复
热议问题