ruby-trunk-changes r34933 - r34945

今日は require 失敗時に発生する LoadError に path を持たせる拡張と XMLRPC の不具合修正や新機能追加がありました。

tenderlove:r34933 2012-03-07 07:40:38 +0900

XMLRPC::Client のテスト用のダミーの子クラスを拡張してダミーの結果を返すようにさせて XMLRPC::Client#call のテストを追加しています。またそのための XML ドキュメントデータ用のファイルを追加しています。

svn:r34934 2012-03-07 07:40:42 +0900

version.h の日付更新。

tenderlove:r34935 2012-03-07 07:45:43 +0900

XMLRPC::Client が http サーバから Content-Type ヘッダのないリプライを受信した時にエラーになるのを修正。指定がなかったら "text/xml" として処理するようにしています。 [ruby-core:41204] [Bug #5660]

tenderlove:r34936 2012-03-07 08:30:03 +0900

XMLRPC の仕様に疎いのでなんとなく修正内容からの推測ですが XMLRPC の i8 というタグ(型? おそらく 8byte 整数という意味ではないかと)のサポートを追加しています。 [ruby-core:29246] [Feature #3090]
テストが r34933 で追加した XML データを gsub で置換して使い回していてちょっと危なげですね。

tenderlove:r34937 2012-03-07 08:30:15 +0900

XMLRPC::Client#do_rpc で Net::HTTP を生成しているところで直接クラスを参照せずに net_http メソッドを利用するようにしています。
が、これ net_http(host, port, ...) としないといけないところを net_http.new(host, port, ...) としていて間違ってそうです。

tenderlove:r34938 2012-03-07 08:38:33 +0900

require に失敗した時に発生する LoadError に失敗したスクリプトファイルのファイルパスをインスタンス変数に格納し、LoadError#path で参照できるようにしています。 [ruby-core:39079] [Feature #5221]
なんとなく @ から始まらないインスタンス変数にして Ruby レベルからは隠したほうがいい理由があったような気がするのですが思い出せない。うーん。

tenderlove:r34939 2012-03-07 08:49:27 +0900

r34939 の ChangeLog エントリに ML の番号を追記しています。

nobu:r34940 2012-03-07 10:28:51 +0900

XMLRPC テスト用に追加した test/xmlrpc/data/blog.xmlsvn property を設定しています。

nobu:r34941 2012-03-07 12:26:30 +0900

r34938 で追加した rb_load_fail でファイルパスを const char * として渡していたのを String オブジェクトで(VALUE 型で)渡してメッセージを作りつつそのまま埋め込むようにしています。また rb_load_fail() の宣言は internal.h に移動しています。

nobu:r34942 2012-03-07 12:38:05 +0900

r34941 の ChangeLog に余分な文字が入ってたのを削ってます。

nobu:r34943 2012-03-07 14:22:43 +0900

load_failed() で GC のためのコンパイラの最適化避けをしているところがありますが、対象の String オブジェクトもそのまま rb_loaderror_with_path() に渡しているため不要なので削除しています。

nobu:r34944 2012-03-07 16:30:31 +0900

LoadError 発生時のメッセージのエンコーディングをファイルパスのエンコーディングに依存して決まるように作りかたを修正しています。

nagachika:r34945 2012-03-07 22:45:04 +0900

r34937 で net_http.new(...) となっていた部分を net_http(...) と修正し、そのパスを通すようにテストを追加しています。