strftime
mswin32バイナリのrubyで、Time.now.strftimeに長いstringを与えると、""が返ってくる。Vista x64 Ultimateに http://www.garbagecollect.jp/ruby/mswin32/ja/ のx32とx64をインストールしてみたけど、どっちもダメだった。他の環境(Win XP SP2 x86, Freebsd x86 amd64)では問題なかった。また、cygwinも問題なし。
以下、ソース。
require 'test/unit' class TestStrftime < Test::Unit::TestCase def test_simple str = '%Y' (1..100).each do |t| str = str + 'Y' grepstr = str.gsub(/%Y/, Time.now.year.to_s) strfstr = Time.now.strftime(str) assert_equal(grepstr, strfstr) end end end
で、Vista x64の出力が
Loaded suite datetest Started F Finished in 0.014 seconds. 1) Failure: test_simple(TestStrftime) [datetest.rb:9:in `block in test_simple' datetest.rb:5:in `each' datetest.rb:5:in `test_simple']: <"2008YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYYYYYYYYYYY"> expected but was <"">. 1 tests, 96 assertions, 1 failures, 0 errors
他のは勿論エラーなし。
Loaded suite datetest Started . Finished in 0.0 seconds. 1 tests, 100 assertions, 0 failures, 0 errors
(追記)
じゃあ、cygwinをつかえとなるかもしれないが、cygwinはRuby on Railsで/dev/urandom関係のエラーがでるので、使えないのじゃ。コンソールで使えるようにすることはできるのじゃが、Radrails上で使えないのじゃ。
うーん、こまったこまった。