hot_reloader 0.1.0 → 0.3.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
  SHA256:
3
- metadata.gz: ec0e3c1431bef973f80a63c492edc79bae5eb435fd280d8b0594323d10ff0396
4
- data.tar.gz: 5496d56ab76af81abbe464317f02c56758a72d297702e47068ebe5375351b35a
3
+ metadata.gz: f238abd11b4178e8c62c1550129bb536eab26894cd2f23d8357796f9d24ff8df
4
+ data.tar.gz: ce7662f5a23fe9e4f15f42d640df0a8739c24d5827b4448be1162938d6b4c64e
5
5
  SHA512:
6
- metadata.gz: a3bd2875289eaf879180477d43b1d924febdcef2dc1caf3aaedda22a43718343cfa2411e425fecd8ac3de4b35d5596d250c55a6b23902f53c6a050b8ee730e30
7
- data.tar.gz: 7fff7f4d9b5e4e86a9e72dafc73e795215e661785e13e52577aaa69d089d2454a92abb99bcf18f4a04f9fd975a8284fc65aeebf8b69d114d93922f0d45d1a2ae
6
+ metadata.gz: ed014be9bed50b5f4695edbc835944465b6de1b67847b871469c1f592628fa3eb2358338d13c6ecb4ccb0dc5fa12017fda14e71fdb9730786aac80b385cc9437
7
+ data.tar.gz: 7f39204335c2e31c898997255d8d7a5264fd7df69675ce63e9e0fb2f050009fd1051a86127ddd06e35b3fb1bdfee995ca3864a5479b7ad92c90b75bd2174b507
data/README.md CHANGED
@@ -27,17 +27,14 @@ require 'roda'
27
27
  require 'hot_reloader'
28
28
 
29
29
  if ENV['RACK_ENV'] == 'production'
30
- HotReloader.will_listen(__dir__)
31
- run ->(env) {
32
- App.call(env)
33
- }
34
- else
30
+ HotReloader.eager_load(__dir__, 'another/root/path')
35
31
  run App
32
+ else
33
+ HotReloader.will_listen([__dir__, 'another/root/path'])
34
+ run ->(env) { App.call(env) }
36
35
  end
37
36
  ```
38
37
 
39
- Then create app.rb in ROOT directory.
40
-
41
38
  ```rb
42
39
  # app.rb
43
40
 
@@ -1,5 +1,5 @@
1
- module HotReloader
2
- VERSION = [0, 1, 0]
1
+ class HotReloader
2
+ VERSION = [0, 3, 0]
3
3
 
4
4
  class << VERSION
5
5
  def to_s
data/lib/hot_reloader.rb CHANGED
@@ -1,14 +1,41 @@
1
+ require 'singleton'
1
2
  require 'zeitwerk'
2
3
  require 'listen'
3
4
 
4
- module HotReloader
5
- module_function
5
+ class HotReloader
6
+ include Singleton
6
7
 
7
- def will_listen(*directories, logger: method(:puts))
8
- loader = Zeitwerk::Loader.new
9
- loader.logger = logger
10
- directories.each {|directory| loader.push_dir(directory) }
11
- loader.setup
12
- Listen.to(*directories) { loader.reload }.start
8
+ def initialize
9
+ @loader = Zeitwerk::Loader.new
10
+ end
11
+
12
+ class << self
13
+ def will_listen(*folders, logger: method(:puts), ignore: [])
14
+ folders = folders.flatten
15
+ setup_loader(folders, logger: logger, ignore: ignore)
16
+ Listen.to(*folders) { loader.reload }.start
17
+ end
18
+
19
+ def eager_load(*folders, logger: method(:puts))
20
+ folders = folders.flatten
21
+ setup_loader(folders, logger: logger, ignore: [])
22
+ loader.eager_load
23
+ end
24
+
25
+ private
26
+
27
+ def loader
28
+ instance.instance_variable_get(:@loader)
29
+ end
30
+
31
+ def setup_loader(folders, logger:, ignore:)
32
+ raise 'ignore: only accept an array of glob patterns string or Pathname objects.' unless ignore.is_a? Array
33
+ raise 'you must set the root folders from which you want to load watched files.' if folders&.empty?
34
+
35
+ folders.each {|folder| loader.push_dir(folder) }
36
+ loader.logger = logger
37
+ loader.ignore(ignore) unless ignore.empty?
38
+ loader.setup
39
+ end
13
40
  end
14
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hot_reloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Billy.Zheng(zw963)