Tag: zlib

即使在force_encoding之后,Rails / Ruby也会在UTF-8中无效字节序列

我正在尝试在Rails中迭代一个远程nginx日志文件(压缩.gz文件),我在文件中的某个位置收到此错误: TTPArgumentError: invalid byte sequence in UTF-8 我尝试强制编码,虽然看起来编码已经是UTF8: logfile = logfile.force_encoding(“UTF-8”) 我正在使用的方法: def remote_update uri = “http://” + self.url + “/localhost.access.log.2.gz” source = open(uri) gz = Zlib::GzipReader.new(source) logfile = gz.read # prints UTF-8 print logfile.encoding.name logfile = logfile.force_encoding(“UTF-8”) # prints UTF-8 print logfile.encoding.name logfile.each_line do |line| print line[/\/someregex\/1\/(.*)\//,1] end end 真的试图理解为什么会发生这种情况(试图查看其他SO线程但没有成功)。 这有什么不对? 更新: 添加了exception的跟踪: HTTPArgumentError: […]

我在安装gem时遇到此错误:“错误:执行gem时…(Zlib :: GzipFile :: Error)”

可能重复: 错误:执行gem …(Zlib :: GzipFile :: Error)时不是gzip格式 在我的系统上安装gem时,出现以下错误: gem install blackbook –version “>= 1.0.7” –source http://github.com/tamoyal/blackbook/tree/master ERROR: While executing gem … (Zlib::GzipFile::Error) not in gzip format 有关为什么会发生这种情况的任何想法? 我构建了gem所以也许我的gem构建有问题吗? 谢谢

为什么我得到Zlib :: DataError?

我发布到我无法控制的远程服务器。 正在通过的参数肯定是问题的一个因素,但我很难弄清楚它为什么会失败。 看起来没有足够大的变化来创建错误。 我从未直接处理zlib压缩。 有没有办法获得更好的错误输出? 例: 通过: {“email” => “a@bc.com”} 这失败了: {“email” => “a@bd.com”} Ruby 2.2 / Rails 4 错误: # # “invalid block type” [ 0] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:377:in `inflate'”, [ 1] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:377:in `block in inflate_adapter'”, [ 2] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/protocol.rb:411:in `call_block'”, [ 3] “/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/protocol.rb:402:in `<<'", [ 4] "/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/protocol.rb:106:in `read'", [ 5] "/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:399:in `read'", [ 6] "/home/pete/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/net/http/response.rb:317:in `read_chunked'", […]

什么可以解释“无效的存储块长度”错误?

我正在Vagrant虚拟盒中的基本Ubuntu lucid32映像上运行带有Ruby 1.9.3p194的Rails(3.2.3)应用程序。 虚拟盒在Leopard上运行,因为它的价值。 我正在尝试在应用程序中使用rubyzip来解压缩zip存档2009_da_lmp.zip 。 直接使用rubyzip存储库中的示例代码,我可以确认我可以列出存档文件内容: #f is the absolute path to 2009_da_lmp.zip (string) Zip::ZipFile.open(f) { |zf| zf.entries[0] } => 20090101_da_lmp.csv #that is indeed a file in the archive. 使用存储库中示例中的更多代码,我尝试获取存档中的实际文件: Zip::ZipInputStream.open(f) { |zis| entry = zis.get_next_entry print “first line of ‘#{entry.name}’ (#{entry.size} bytes: ) ” puts “‘#{zis.gets.chomp}'” } => first line of ‘20090101_da_lmp.csv’ (826610 […]

使用Zlib压缩ruby中的大文件以获取gzip

我有一个非常大的文件,约。 2亿行数据。 我想用Zlib库压缩它,特别是使用Writer。 一次读取每一行似乎需要花费相当多的时间。 有没有更好的方法来实现这一目标? 这就是我现在所拥有的: require ‘zlib’ Zlib::GzipWriter.open(‘compressed_file.gz’) do |gz| File.open(large_data_file).each do |line| gz.write line end gz.close end