Как перенаправить вывод программы Ruby в какой-нибудь файл - PullRequest
2 голосов
/ 06 июля 2010

У меня есть следующий код:

puts "amit"
puts "ravi"

Это выводит:

amit
ravi

Я бы хотел перенаправить amit в один файл и ravi в другой файл.

Предположим, мое имя файла name.rb. Когда я пытаюсь, как

system("name.rb > #{@filename}")

оба amit и ravi перенаправлены на @filename, но я хочу перенаправить на другой файл или сначала он будет перенаправлен на два файла с одинаковым именем, но в одном файле выводится amit и в другом файле того же вывода есть ravi .

Ответы [ 3 ]

5 голосов
/ 07 июля 2010

Вы можете изменить назначение $ stdout и $ stderr:

stout = File.open(ARGV[0], 'w')
sterr = File.open(ARGV[1], 'w')

$stdout.reopen(stout)
$stderr.reopen(sterr)

puts "something"
$stderr.puts "something another"
3 голосов
/ 06 июля 2010

Вместо перенаправления вы можете передавать имена файлов в качестве аргументов и писать из ruby ​​в файлы:

open(ARGV[0], 'w') do |f|
  f.puts "amit"
end

open(ARGV[1], 'w') do |f|
  f.puts "ravi"
end

Тогда:

system("name.rb 1.txt 2.txt")
1 голос
/ 06 июля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...