Windows 版 Ruby の open-uri に POST メソッドを使えるようにする patch を当てる

参考したリンクは下記のとおり。

元に戻したくなったら、バックアップされたopen-uri.rb.origがあると思うので、そいつでopen-uri.rbを上書きするなどしてみてください。

http://blog.livedoor.jp/sparklegate/archives/50288860.html

と記載されているが、バックアップされた「open-uri.rb.orig」は作成されなかった。
なので、明示的にバックアップを作成するように指定した。

C:\ruby\lib\ruby\1.8>patch -b -z .orig open-uri.rb diff-1.8
patching file open-uri.rb

C:\ruby\lib\ruby\1.8>dir
(略)
2008/07/10  10:49            22,827 open-uri.rb
2007/02/13  08:01            21,313 open-uri.rb.orig
(略)

詳細は、Manpage of PATCHを参照してもらうとして、指定したオプションは下記の通り。

  •  -b バックアップファイルを作成する
  •  -z suffix suffix を簡易バックアップサフィクスとして使う。

Windows XP 上では下記の作業を行った

  1. Make open-uri capable of handling HTTP methods other than GETから Ruby 1.8.x 用の patch をダウンロード。
  2. パッチ名は「diff-1.8」。
  3. 作業を始める前に、open-uri.rb のオリジナルを任意のフォルダにコピーしておく。
    patch に失敗したときに、取り返しが効くようにするための対応。
  4. patch を open-uri.rb があるフォルダに移動する。
    今回は、Ruby を「C:\ruby」に配置している。そのため、open-uri.rb は「C:\ruby\lib\ruby\1.8」にある。
  5. 「コマンド プロンプト」を起動し、「C:\ruby\lib\ruby\1.8」に移動する。
  6. 「patch -b -z .orig open-uri.rb diff-1.8」を実行する。
  7. その後、動作確認して、patch が正常に行われたかを確認する。

実際に「コマンド プロンプト」に入力した内容は下記の通り。

C:\Documents and Settings\littlebuddha>cd C:\ruby\lib\ruby\1.8

C:\ruby\lib\ruby\1.8>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 8858-595C です

 C:\ruby\lib\ruby\1.8 のディレクトリ

(略)
2008/07/10  10:29             2,052 diff-1.8
(略)
2007/02/13  08:01            21,313 open-uri.rb
(略)
             101 個のファイル           1,118,462 バイト
              33 個のディレクトリ  10,458,206,208 バイトの空き領域

C:\ruby\lib\ruby\1.8>patch -b -z .orig open-uri.rb diff-1.8
patching file open-uri.rb

C:\ruby\lib\ruby\1.8>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 8858-595C です

 C:\ruby\lib\ruby\1.8 のディレクトリ

(略)
2008/07/10  10:29             2,052 diff-1.8
(略)
2008/07/10  10:49            22,827 open-uri.rb
2007/02/13  08:01            21,313 open-uri.rb.orig
(略)
             103 個のファイル           1,143,341 バイト
              33 個のディレクトリ  10,458,038,272 バイトの空き領域

C:\ruby\lib\ruby\1.8>