Метод GzipReader each_line отсутствует в Rubinius

Я пытаюсь прочитать сжатый файл с помощью Zlib:GzipReader. Это работает, как и ожидалось, с использованием ruby ​​​​1.9.3, но я получаю ошибку method_missing для each_line при использовании Rubinius.

Есть ли способ прочитать сжатый файл с помощью Rubinius?

require 'zlib'

Zlib::GzipReader.open("lines.txt.gz").each_line { |line|
  puts "#{line}"
}

Kernel(Zlib::GzipReader)#each_line (method_missing) at kernel/delta/kernel.rb:81

person Trevor    schedule 04.06.2012    source источник


Ответы (1)


Я считаю, что это ошибка в Rubinius, вам следует рассмотреть возможность создания проблемы с проектом. Тем не менее, этот обходной путь должен помочь вам:

require 'zlib'
require 'stringio'

file = File.read("lines.txt.gz")
lines = Zlib::GzipReader.new(StringIO.new(file)).read
person Eugene    schedule 04.06.2012
comment
Да, в Rubinius он кажется неопределённым. Я открыл с ними тему. Спасибо за обходной путь. - person Trevor; 15.06.2012