HumanDate-ja ver0.0.3

HumanDate-ja0.0.3をリリースします。
おもな修正内容は、rails2.0になってActiveSupportの仕様が変わっちゃったことへの追随です。

hideAki :

日にちがうまくでません(T-T;;;

7月は1日か11日にしかなんないですね〜



もぎゃ

そうなのですよ。どうも普通に日付を書いた時の挙動がおかしくて、何とかしないといけないなぁ、と思いながら、先送りになっちゃっています。

(HumanDate 0.0.2 – もぎゃろぐ)



そうなのですよ、と言ったのですが、「そこまでひどかったっけ?」という心の声がしたので、単体テストを走らせてみたら、日付関係のテストが全滅しています。



調べてみると、activeSupportのtime#changeからすでにおかしい。


irb(main):006:0> test = Time.parse(“Mon May 21 23:51:59 +0900 2001”)

=> Mon May 21 23:51:59 +0900 2001

irb(main):010:0> test = test.change(:mday=>25)

=> Mon May 21 23:51:59 +0900 2001



…timeの「分」部分が変更できません。調べてみると、あらびっくり。


*2.0.1* (December 7th, 2007)

* Deprecation: remove deprecated :mday option from Time, Date, and DateTime#change. [Jeremy Kemper]

rails / activesupport / CHANGELOG — GitHub



以前、timeの「分」部分を変えようと思ったら、change(:mday=>25)だったのですが、このラベルがdayに変わってしまったようです。


irb(main):011:0> test = test.change(:mday=>25)

=> Mon May 21 23:51:59 +0900 2001

irb(main):019:0> test = test.change(:day=>25)

=> Fri May 25 23:51:59 +0900 2001



 …rails2.0はrails1.0系と互換性がとれないよ、ということをはっきりさせるためにメジャー番号をあげたわけですから、非互換だからと言って文句は言えないですね。



しょうがないのでこうすることにしました。


irb(main):009:0> test.change(:mday=>25,:day=>25)

=> Fri May 25 23:51:59 +0900 2001



これで、rails1.0系でも、2.0系でもとりあえず動いてくれるはずです。



あと、end_of_monthが0:00じゃなくて23:59を指すことになった仕様変更にも対応しました。



#これなんて、ドキュメントすらキャッチアップされていないような^^;



ずれてます2 – urekatのスカンク日記3
の不具合は治らないままですが、とりあえずHumanDate-ja0.0.3として置いておきます。



HumanDate-ja-0.0.3.gem


hideAkiさんよかったら試してみてくださいませ。