0

Windows XP を実行しています。Ruby(1.9)の最新バージョンをインストールしました-Hpricot、Mechanize、および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>'

スターターの例をいくつか試しましたが、すべて同じエラー メッセージが表示されます。今日はルビーを始めたばかりなので、何が起こっているのかよくわかりません。

ありがとう!

4

1 に答える 1

1

1.8でエンコーディングの問題に対処するためscrubytに使用されたように、Ruby1.9対応ではないようです。1.9の時点で、rubyはより優れたエンコーディングサポート(特にutf-8)を備えているため、もう必要ありません。jcodejcode

1.9.2の場合:

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の場合:

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ファイルを次のように変更しようとしました。

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

さらに問題が発生しました...したがって、Scrubytをruby 1.9で実行するには、さらに多くの作業を行う必要があります。

FWIW、あなたのユースケースはおそらくもっと複雑ですが、あなたの例はMechanize(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
于 2011-03-02T18:27:57.630 に答える