2. ruby - トラブルシュート - # つきの URI がエラーになる

 
2.1 # つきの URI がエラーになる
2.2 解決策

2.1 # つきの URI がエラーになる

追而書  これだよ、これ「http://freebsd.sing.ne.jp/lang/ruby/99/02.html#2.1」  これを下記のようなソースを書いて開こうとすると例外発生となります。
#!/usr/bin/env ruby

=begin

URI をオープンしてみる

=end

require 'open-uri'

begin
  uri = URI.encode('http://freebsd.sing.ne.jp/lang/ruby/99/02.html#2.1')
  uri = URI.parse(uri)

  html = open(uri).read
rescue => error
  puts("例外発生[#{error.class}]")

  error.backtrace_locations.each do | line |
    puts("#{line}")
  end

  puts("[#{there.class.name}][#{error.message}]")
end



 12行目を下記のように書けば、意図通りに動きます。

  uri = URI.encode('http://freebsd.sing.ne.jp/lang/ruby/99/02.html')
 実際にブラウザでリンクをクリックすれば開くので「#2.1」の箇所へと飛ぶので、ブラウザに何か仕掛けがあるのでしょうね。  ブラウザのソースをハックしたことはないのです。

2.2 解決策

 わたしなりの解決策として、上記のような場合は「http://freebsd.sing.ne.jp/lang/ruby/99/02.html」と「2.1」とに分けて  「http://freebsd.sing.ne.jp/lang/ruby/99/02.html」を開いてドキュメントを取得して、内部の id として「2.1」が定義されているかをチェックするようにしました。