diff options
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/file_update_checker.rb | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/activesupport/lib/active_support/file_update_checker.rb b/activesupport/lib/active_support/file_update_checker.rb index 4f0a2dedc5..fa0b1a4bcf 100644 --- a/activesupport/lib/active_support/file_update_checker.rb +++ b/activesupport/lib/active_support/file_update_checker.rb @@ -112,23 +112,27 @@ module ActiveSupport # reloading is not triggered. def max_mtime(paths) time_now = Time.now - time_at_zero = Time.at(0) - max_time = time_at_zero + max_mtime = nil paths.each do |path| - time = File.mtime(path) + mtime = File.mtime(path) + + # Prevent dates in the future being considered + # Equivalent ruby: + # time.now < mtime + next if time_now.compare_without_coercion(mtime) < 0 # This avoids ActiveSupport::CoreExt::Time#time_with_coercion # which is super slow when comparing two Time objects # # Equivalent Ruby: - # time < time_now && time > max_time - if time.compare_without_coercion(time_now) < 0 && time.compare_without_coercion(max_time) > 0 - max_time = time + # max_mtime.nil? || max_mtime < mtime + if max_mtime.nil? || max_mtime.compare_without_coercion(mtime) < 0 + max_mtime = mtime end end - max_time.object_id == time_at_zero.object_id ? nil : max_time + max_mtime end def compile_glob(hash) |