diff options
author | John Hawthorn <john@hawthorn.email> | 2019-05-22 16:42:34 -0700 |
---|---|---|
committer | John Hawthorn <john@hawthorn.email> | 2019-05-23 12:27:13 -0700 |
commit | 2fd6c3799dd04dcae0948acd25c40dded1459756 (patch) | |
tree | 07cc823b5dcf971e424e2d5d262e1d91ce1d3ed4 /activesupport/lib | |
parent | f1084f2d0eaf8405284b2da19e8ac2c2eb7063ad (diff) | |
download | rails-2fd6c3799dd04dcae0948acd25c40dded1459756.tar.gz rails-2fd6c3799dd04dcae0948acd25c40dded1459756.tar.bz2 rails-2fd6c3799dd04dcae0948acd25c40dded1459756.zip |
Fix EventedFileUpdateChecker through a symlink
On MacOS, Dir.tmpdir gives me a folder inside "/var/folders/". However,
/var is a symlink to /private/var.
Previously, the nonexistent directory test would fail because it was
initialized with /var/folders/... but the filenames from listen would be
the realpaths.
This commit normalizes the dirs by calling realpath on them if they
exist. This is done on boot!, so it will work with newly directories
through the symlink.
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/evented_file_update_checker.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/evented_file_update_checker.rb b/activesupport/lib/active_support/evented_file_update_checker.rb index 3893b0de0e..15b84537cc 100644 --- a/activesupport/lib/active_support/evented_file_update_checker.rb +++ b/activesupport/lib/active_support/evented_file_update_checker.rb @@ -107,6 +107,7 @@ module ActiveSupport private def boot! + normalize_dirs! Listen.to(*@dtw, &method(:changed)).start end @@ -114,6 +115,12 @@ module ActiveSupport Listen.stop end + def normalize_dirs! + @dirs.transform_keys! do |dir| + dir.exist? ? dir.realpath : dir + end + end + def changed(modified, added, removed) unless updated? @updated.make_true if (modified + added + removed).any? { |f| watching?(f) } |