diff options
author | Maarten Jacobs <m.jacobs@defacto.nl> | 2015-09-29 13:53:39 +0200 |
---|---|---|
committer | Maarten Jacobs <m.jacobs@defacto.nl> | 2015-10-16 15:09:45 +0200 |
commit | 86d2924a115c2604e4facdf285a7b764938fae0f (patch) | |
tree | 71246c411b4768efa599760eacd336a7f76673f1 /activesupport/lib | |
parent | b3656076d64fabb7a492aa4b8e8d45b6826b8798 (diff) | |
download | rails-86d2924a115c2604e4facdf285a7b764938fae0f.tar.gz rails-86d2924a115c2604e4facdf285a7b764938fae0f.tar.bz2 rails-86d2924a115c2604e4facdf285a7b764938fae0f.zip |
fixes #21815
The default timestamp used for AR is `updated_at` in nanoseconds! (:nsec) This causes issues on any machine that runs an OS that supports nanoseconds timestamps, i.e. not-OS X, where the cache_key of the record persisted in the database (milliseconds precision) is out-of-sync with the cache_key in the ruby VM.
This commit adds:
A test that shows the issue, it can be found in the separate file `cache_key_test.rb`, because
- model couldn't be defined inline
- transactional testing needed to be turned off to get it to pass the MySQL tests
This seemed cleaner than putting it in an existing testcase file.
It adds :usec as a dateformat that calculates datetime in microseconds
It sets precision of cache_key to :usec instead of :nsec, as no db supports nsec precision on timestamps
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/core_ext/time/conversions.rb | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/time/conversions.rb b/activesupport/lib/active_support/core_ext/time/conversions.rb index eecbac2c20..536c4bf525 100644 --- a/activesupport/lib/active_support/core_ext/time/conversions.rb +++ b/activesupport/lib/active_support/core_ext/time/conversions.rb @@ -6,6 +6,7 @@ class Time :db => '%Y-%m-%d %H:%M:%S', :number => '%Y%m%d%H%M%S', :nsec => '%Y%m%d%H%M%S%9N', + :usec => '%Y%m%d%H%M%S%6N', :time => '%H:%M', :short => '%d %b %H:%M', :long => '%B %d, %Y %H:%M', |