rack-unreloader 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d9318a0edd80ea0c0bae830750c33a607ef0146a
4
- data.tar.gz: d85653f1770a69dcde0e4c15dd32db9b43ff8686
3
+ metadata.gz: d64b1a401d4679d7a1811a008c2cc5bb951b8722
4
+ data.tar.gz: ef510ae0a796be3d5f11e9d80ba842c9f351e764
5
5
  SHA512:
6
- metadata.gz: ac585d0650959361e75a940f12b677062247ae88c9bc8811146e1808183abb907465ffc786dfffb98372ae9aaac4f5d578dd140d762c39b10ac9d76c51caf6f7
7
- data.tar.gz: 299ffb392c1d525c8037855f353209669bf06fca106af0b745fda6b84175d3f60d8e2cc3e0de0e6e8ed22a5e22bf36756678d47015a7969f62b0c214a97a88ab
6
+ metadata.gz: 9791a0b04d89506251c8fbe9e16cc873f33b581b6927b029b08574170e1dd850048043b97f0e6e15760b5e3961d149132c7b9f7bb4f0ca082bc2be64635b464f
7
+ data.tar.gz: a6eefba4399f58d591bb474c027eefec4bacf633641736806d9f3f13127239107ea29bc5c25e9adad173e5c80f5e2827663b669ce530e6b8a496d71230bca405
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ = 1.5.0 (2016-03-10)
2
+
3
+ * Handle deletions of monitored files (jeremyevans)
4
+
1
5
  = 1.4.0 (2016-01-15)
2
6
 
3
7
  * Avoid use of Thread.exclusive, preventing warnings on ruby 2.3 (celsworth, jeremyevans) (#6)
@@ -94,12 +94,20 @@ module Rack
94
94
  check_monitor_dir(dir, changed_files)
95
95
  end
96
96
 
97
- @monitor_files.each do |file, time|
98
- if file_changed?(file, time)
99
- changed_files << file
97
+ removed_files = []
98
+
99
+ @monitor_files.to_a.each do |file, time|
100
+ if F.file?(file)
101
+ if file_changed?(file, time)
102
+ changed_files << file
103
+ end
104
+ else
105
+ removed_files << file
100
106
  end
101
107
  end
102
108
 
109
+ remove_files(removed_files)
110
+
103
111
  return if changed_files.empty?
104
112
 
105
113
  unless @dependencies.empty?
@@ -200,12 +208,7 @@ module Rack
200
208
  changed_files.concat(dependency_files(removed_files))
201
209
  end
202
210
 
203
- removed_files.each do |f|
204
- remove(f)
205
- @monitor_files.delete(f)
206
- @dependencies.delete(f)
207
- @dependency_order.delete(f)
208
- end
211
+ remove_files(removed_files)
209
212
 
210
213
  require_dependencies(new_files, &block)
211
214
 
@@ -222,6 +225,17 @@ module Rack
222
225
  files.replace(cur_files)
223
226
  end
224
227
 
228
+ # Remove all files in removed_files from the internal data structures,
229
+ # because the file no longer exists.
230
+ def remove_files(removed_files)
231
+ removed_files.each do |f|
232
+ remove(f)
233
+ @monitor_files.delete(f)
234
+ @dependencies.delete(f)
235
+ @dependency_order.delete(f)
236
+ end
237
+ end
238
+
225
239
  # Requires the given file, logging which constants or features are added
226
240
  # by the require, and rolling back the constants and features if there
227
241
  # are any errors.
@@ -100,6 +100,16 @@ describe Rack::Unreloader do
100
100
  %r{\ANew classes in .*spec/app\.rb: App\z}
101
101
  end
102
102
 
103
+ it "should stop monitoring file for changes if it is deleted constants contained in file and reload file if file changes" do
104
+ ru.call({}).must_equal [1]
105
+ File.delete('spec/app.rb')
106
+ proc{ru.call({})}.must_raise NameError
107
+ log_match %r{\ALoading.*spec/app\.rb\z},
108
+ %r{\ANew classes in .*spec/app\.rb: App\z},
109
+ %r{\AUnloading.*spec/app\.rb\z},
110
+ "Removed constant App"
111
+ end
112
+
103
113
  it "should check constants using ObjectSpace if require proc returns :ObjectSpace" do
104
114
  base_ru
105
115
  update_app(code(1))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-unreloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Evans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest