Skip to content

Commit

Permalink
Increase AR#cache_key precision to nanoseconds
Browse files Browse the repository at this point in the history
  • Loading branch information
jgaskins committed May 19, 2012
1 parent 88949f8 commit 900dbc5
Showing 4 changed files with 6 additions and 3 deletions.
2 changes: 1 addition & 1 deletion activerecord/lib/active_record/integration.rb
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@ def cache_key
when new_record?
"#{self.class.model_name.cache_key}/new"
when timestamp = self[:updated_at]
timestamp = timestamp.utc.to_s(:number)
timestamp = timestamp.utc.to_s(:nsec)
"#{self.class.model_name.cache_key}/#{id}-#{timestamp}"
else
"#{self.class.model_name.cache_key}/#{id}"
2 changes: 1 addition & 1 deletion activerecord/test/cases/base_test.rb
Original file line number Diff line number Diff line change
@@ -1939,7 +1939,7 @@ def test_cache_key_for_existing_record_is_not_timezone_dependent

def test_cache_key_format_for_existing_record_with_updated_at
dev = Developer.first
assert_equal "developers/#{dev.id}-#{dev.updated_at.utc.to_s(:number)}", dev.cache_key
assert_equal "developers/#{dev.id}-#{dev.updated_at.utc.to_s(:nsec)}", dev.cache_key
end

def test_cache_key_format_for_existing_record_with_nil_updated_at
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ class Time
DATE_FORMATS = {
:db => '%Y-%m-%d %H:%M:%S',
:number => '%Y%m%d%H%M%S',
:nsec => '%Y%m%d%H%M%S%9N',
:time => '%H:%M',
:short => '%d %b %H:%M',
:long => '%B %d, %Y %H:%M',
4 changes: 3 additions & 1 deletion activesupport/test/core_ext/time_ext_test.rb
Original file line number Diff line number Diff line change
@@ -557,12 +557,14 @@ def test_next_week_near_daylight_end
end

def test_to_s
time = Time.utc(2005, 2, 21, 17, 44, 30)
time = Time.utc(2005, 2, 21, 17, 44, 30.12345678901)
assert_equal time.to_default_s, time.to_s
assert_equal time.to_default_s, time.to_s(:doesnt_exist)
assert_equal "2005-02-21 17:44:30", time.to_s(:db)
assert_equal "21 Feb 17:44", time.to_s(:short)
assert_equal "17:44", time.to_s(:time)
assert_equal "20050221174430", time.to_s(:number)
assert_equal "20050221174430123456789", time.to_s(:nsec)
assert_equal "February 21, 2005 17:44", time.to_s(:long)
assert_equal "February 21st, 2005 17:44", time.to_s(:long_ordinal)
with_env_tz "UTC" do

0 comments on commit 900dbc5

Please sign in to comment.