diff options
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/CHANGELOG | 2 | ||||
-rw-r--r-- | activesupport/lib/active_support/time_with_zone.rb | 6 | ||||
-rw-r--r-- | activesupport/test/core_ext/time_with_zone_test.rb | 7 |
3 files changed, 15 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index d72fdadf3f..6b1130a32a 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* TimeWithZone responds to Ruby 1.9 weekday-named query methods [Geoff Buesing] + * TimeWithZone caches TZInfo::TimezonePeriod used for time conversion so that it can be reused, and enforces DST rules correctly when instance is created from a local time [Geoff Buesing] * Fixed that BufferedLogger should create its own directory if one doesn't already exist #11285 [lotswholetime] diff --git a/activesupport/lib/active_support/time_with_zone.rb b/activesupport/lib/active_support/time_with_zone.rb index 68585e8273..10c3543d6e 100644 --- a/activesupport/lib/active_support/time_with_zone.rb +++ b/activesupport/lib/active_support/time_with_zone.rb @@ -153,6 +153,12 @@ module ActiveSupport alias_method :mday, :day alias_method :month, :mon + %w(sunday? monday? tuesday? wednesday? thursday? friday? saturday?).each do |name| + define_method(name) do + time.__send__(name) + end + end unless RUBY_VERSION < '1.9' + def to_a time.to_a[0, 8].push(dst?, zone) end diff --git a/activesupport/test/core_ext/time_with_zone_test.rb b/activesupport/test/core_ext/time_with_zone_test.rb index 5f1a002071..e828e62f9b 100644 --- a/activesupport/test/core_ext/time_with_zone_test.rb +++ b/activesupport/test/core_ext/time_with_zone_test.rb @@ -281,6 +281,13 @@ uses_tzinfo 'TimeWithZoneTest' do assert_equal true, twz.dst? assert_equal 'EDT', twz.zone end + + def test_ruby_19_weekday_name_query_methods + ruby_19_or_greater = RUBY_VERSION >= '1.9' + %w(sunday? monday? tuesday? wednesday? thursday? friday? saturday?).each do |name| + assert_equal ruby_19_or_greater, @twz.respond_to?(name) + end + end end class TimeWithZoneMethodsForTimeAndDateTimeTest < Test::Unit::TestCase |