Как заставить Ruby 'puts' записывать данные в файл?

У меня есть следующий код, который я хочу использовать для ping IP-адресов и записи в файл. Все работает отлично, но я не могу заставить его написать файл.

server = %w'192.168.150.254
192.168.150.251
192.168.120.1
192.168.120.2'

File.open('/test/test2.out','w') do |s|
  server.each do |p|
    r = `ping -a -n 1 #{p}`
    puts r
  end
end

Ответ 1

Измените puts r на s.puts r. Вы пишете на stdout вместо s. (Смотрите Kernel#puts и IO#puts)