【问题标题】:Getting Errno::ENOMEM: Not enough space when 'getting' a page via Mechanize获取 Errno::ENOMEM:通过 Mechanize “获取”页面时空间不足
【发布时间】:2013-03-08 03:33:37
【问题描述】:

我目前正在尝试学习有关网络抓取的教程,并且收到了 ruby​​ 错误消息“Errno::ENOMEM: 空间不足”。我从http://bugs.ruby-lang.org/issues/show/1063 找到了一种解决方法,但我想知道是否有更永久的解决方案。我正在使用 ruby​​ 1.8.7 (2010-12-23 patchlevel 330) [i386-mingw32] 并且我无法更新到我怀疑可以解决此问题的新版本。仅当我尝试获取更大的页面时才会出现此问题。

当前解决方案:

class String
  def to_2d_array(value)
    unpack("a#{value}"*((size/value)+((size%value>0)?1:0)))
  end
end

class << $stdout
  alias old_write write

  def write(a) 
    a.to_s.to_2d_array(1024).each{|little| old_write little}
  end
end

【问题讨论】:

  • 我可以在 Ruby 中编辑一个文件,我不必每次都输入这个 hack,而是自动加载它吗? String 类还是什么?

标签: ruby windows-console mechanize-ruby


【解决方案1】:

为了解决我的问题,我添加了:

class String
  def to_2d_array(value)
    unpack("a#{value}"*((size/value)+((size%value>0)?1:0)))
  end
end

class << $stdout
  alias old_write write

  def write(a) 
    a.to_s.to_2d_array(1024).each{|little| old_write little}
  end
end

到我的 irb.rb 文件最后结束后。

【讨论】:

  • 请注意,当您从命令行运行 irb 时,根据您的目录,这可能会导致问题。 IE。如果你在 C:\Users\%USERNAME% 它将返回一个错误。
猜你喜欢
  • 2014-01-31
  • 2022-11-29
  • 2016-06-11
  • 1970-01-01
  • 2015-11-19
  • 2014-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多