diff options
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/file_update_checker.rb | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/activesupport/lib/active_support/file_update_checker.rb b/activesupport/lib/active_support/file_update_checker.rb index 4f0a2dedc5..d1eb410c85 100644 --- a/activesupport/lib/active_support/file_update_checker.rb +++ b/activesupport/lib/active_support/file_update_checker.rb @@ -111,13 +111,22 @@ module ActiveSupport # healthy to consider this edge case because with mtimes in the future # reloading is not triggered. def max_mtime(paths) + return nil if paths.empty? + time_now = Time.now - time_at_zero = Time.at(0) - max_time = time_at_zero + max_time = nil paths.each do |path| time = File.mtime(path) + if max_time.nil? + if time.compare_without_coercion(time_now) < 0 + max_time = time + end + + next + end + # This avoids ActiveSupport::CoreExt::Time#time_with_coercion # which is super slow when comparing two Time objects # @@ -128,7 +137,7 @@ module ActiveSupport end end - max_time.object_id == time_at_zero.object_id ? nil : max_time + max_time end def compile_glob(hash) |