きりかノート 3冊め

おあそびプログラミング

MacPorts公式のruby19を1.9.3-p0に

バージョン番号が変わったということでちょっと様子見してたんですが、あまり問題的な話を聞かないので更新しました。

ruby本体的なこととしては。

  • ライセンス変更: RubyとGPLv2とのデュアル → RubyBSDのデュアルに
  • Xcode 4.2のclangに対応

あたりでしょうか。

port固有のトピックで言えば、このへんを対応しました。

  • docバリアント(デフォルト"+")を追加。インストールを短縮したい人は-docを追加してください。rdocの生成をしないのでちょっと速いです。
  • gemで"invalid date format"とか言われる件の応急対処。詳細は後述。
  • universalにしたときのRbConfigを改善。rubyMacPortsの-archの重複をなくした。

お気付きのことなどあればtrac.macports.orgまたは私まで直接お知らせください。ruby本体のことであればredmine.r.oに。

gemで"invalid date format"

1.9.3-p0を試していたら、gemを使うとgemspecがどうたらいうメッセージがでてくる。たとえばこんなの。

 Invalid gemspec in [... json-1.6.1.gemspec]: invalid date format in
 specification: "2011-09-18 00:00:00.000000000Z"

調べた過程はすっとばして、結論だけいうとこの変更が原因。date= のStringでの入力値の検証を YYYY-MM-DD 形式に限定している。上記のエラーは時刻やタイムゾーンがついてるので誤りである、というのがこの"Invalid date format"というメッセージの意味するトコロ。

ruby本体の更新にともなってgemのバージョンが上がった(1.3.7→1.8.11)ので、この変更がはいったものになっている。

対処方法を検索してみると

  • gemをすべて入れ直す
  • gemspecを手で修正しYYYY-MM-DD形式にする

などが出てきたけど、個々のユーザにそんな手順を案内するのはたるすぎるので、コード側で従来の形式も受け入れるようにした。コード修正としては"#196: Removing \Z on Specification#date= method by didip for rubygems/rubygems - Pull Request - GitHub"をそのまま取り入れ。

ということで自分でgemを入れていない限りはport:ruby19ではこのエラーはでないはず。ついでにport:rb-rubygemsを確認しようと思ったとこ、バージョンが1.3.7だったので気にしないことに。