2011-03-02 134 views
0

我正在運行Windows XP。我剛剛安裝了最新版本的Ruby(1.9) - Hpricot,Mechanize和Scrubyt,沒有任何問題。我試圖用我能找到的最簡單的例子來使用scrubyt工作。例如:Scrubyt不會與窗口一起工作

require 'rubygems' 
require 'scrubyt' 

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

data.to_xml.write($stdout, 1) 

但是,我不斷收到錯誤:

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>' 

我嘗試了好幾種起動的例子,都給予同樣的錯誤消息。我今天剛剛開始使用紅寶石,所以我無法弄清楚發生了什麼。

謝謝!

+0

'沒有這樣的文件加載 - jcode(LoadError)'這意味着你必須安裝jcode gem。 '寶石安裝jcode' – 2011-03-02 17:42:43

回答

1

看來scrubyt不是紅寶石1.9就緒,因爲jcode用於1.8到deal with encoding issues。從1.9開始,ruby擁有更好的編碼支持(特別是utf-8),因此不再需要jcode

隨着1.9.2:

[email protected]:~/dev$ rvm 1.9.2-head 
[email protected]:~/dev$ ruby -v 
ruby 1.9.2p94 (2010-12-08 revision 30140) [x86_64-linux] 
[email protected]:~/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:

[email protected]:~/dev$ rvm 1.8.7-head 
[email protected]:~/dev$ ruby -v 
ruby 1.8.7 (2010-12-23 patchlevel 330) [x86_64-linux] 
[email protected]:~/dev$ ruby -e 'require "rubygems"; require "scrubyt"' 
[email protected]:~/dev$ 

我試圖改變Scrubyt文件如下來解決這個問題:

unless "".respond_to? :each_char 
    $KCODE = "u" 
    require "jcode" 
end 

並且還有更多的問題......因此需要做更多的工作才能讓Scrubyt以ruby 1.9運行。

FWIW,你的使用情況極有可能更復雜更多,但你的例子可以用機械化(其中Scrubyt內部使用)來完成:

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 
+0

我會嘗試scrubyt與紅寶石1.8.7 +舊版本的hpricot&機械化,手指交叉。 – DMin 2011-03-02 18:41:10