首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrubyt不能在windows上运行

Scrubyt不能在windows上运行
EN

Stack Overflow用户
提问于 2011-03-02 21:53:36
回答 1查看 899关注 0票数 0

我正在运行Windows XP。我刚刚安装了Ruby(1.9)的最新版本-- Hpricot,Mechanize和Scrubyt安装没有任何问题。我试着用我能找到的最简单的例子来让scrubyt工作。示例:

代码语言:javascript
复制
require 'rubygems'
require 'scrubyt'

data = Scrubyt::Extractor.define do
fetch 'http://google.com'
title '//head/title'
end

data.to_xml.write($stdout, 1)

但是,我一直收到错误:

代码语言:javascript
复制
C:/ruby/lib/ruby/gems/1.9.1/gems/scrubyt-0.4.06/lib/scrubyt.rb:1: warning: varia
    ble $KCODE is no longer effective; ignored
    C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no
    such file to load -- jcode (LoadError)
            from C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `
    require'
            from C:/ruby/lib/ruby/gems/1.9.1/gems/scrubyt-0.4.06/lib/scrubyt.rb:2:in
     `<top (required)>'
            from C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:53:in `
    require'
            from C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:53:in `
    rescue in require'
            from C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `
    require' from te.rb:2:in `<main>'

我已经尝试了几个入门示例,都给出了相同的错误信息。我今天才刚开始用ruby,所以我不知道到底是怎么回事。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2011-03-03 02:27:58

看起来scrubyt还没有准备好Ruby1.9,因为jcode是在1.8到deal with encoding issues中使用的。从1.9开始,ruby有了更好的编码支持(esp.utf-8),因此不再需要jcode

在1.9.2中:

代码语言:javascript
复制
sebastien@greystones:~/dev$ rvm 1.9.2-head
sebastien@greystones:~/dev$ ruby -v 
ruby 1.9.2p94 (2010-12-08 revision 30140) [x86_64-linux]
sebastien@greystones:~/dev$ ruby -e 'require "rubygems"; require "scrubyt"'
/home/sebastien/.rvm/gems/ruby-1.9.2-head/gems/scrubyt-0.4.06/lib/scrubyt.rb:1: warning: variable $KCODE is no longer effective; ignored
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- jcode (LoadError)

使用1.8.7:

代码语言:javascript
复制
sebastien@greystones:~/dev$ rvm 1.8.7-head
sebastien@greystones:~/dev$ ruby -v 
ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux]
sebastien@greystones:~/dev$ ruby -e 'require "rubygems"; require "scrubyt"'
sebastien@greystones:~/dev$ 

我尝试按如下方式更改Scrubyt文件以解决该问题:

代码语言:javascript
复制
unless "".respond_to? :each_char
  $KCODE = "u"
  require "jcode"
end

还有更多的问题。因此,要让Scrubyt与ruby 1.9一起运行,还需要做更多的工作。

FWIW,你的用例很可能更复杂,但是你的例子可以用Mechanize ( Scrubyt内部使用的)来完成:

代码语言:javascript
复制
 require 'rubygems'
 require 'mechanize'

 a = Mechanize.new { |agent|
   agent.user_agent_alias = 'Mac Safari'
 }

 a.get('http://google.com/') do |page|
   puts page.title()
 end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5168398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档