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さんよかったら試してみてくださいませ。