hot_reloader 0.3.2 → 0.4.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: 7f7a23dab8a6321213fc337a02d143cb8ed0eb8414a08178d5ab485975935822
4
- data.tar.gz: 94240e3303b304cb0ab08ef8be9c587a0e77944a1b52203d3f2970a553a454af
3
+ metadata.gz: 653d3d0ea04c00516d19cbccfbc434c065dfbfc6bc0a2da9b4b6a48c21c9a8e4
4
+ data.tar.gz: cfa179f1a802f6585ed42ae2a6dc5b3a3b89ce23cdedf33444a7750e6e8311b7
5
5
  SHA512:
6
- metadata.gz: 88e7cc2a2ab94b09f50bed1c095c6d446472f09f47f3de402c2b7c515a660251ac5551a4ca14dd7a1713e2096fbcc32f12b23fd306d29af7760c44d3c36d51f0
7
- data.tar.gz: 7c872ea05e0146a656758cd6ee2d4b0a08905c342e34029f3f42a0f32f7838b99377874b117a5c1ac330325cef949f09eca767a29c3852e00a853167741f54ed
6
+ metadata.gz: 4a8b390f967df6eca1ed620508f2144e96dc89d52019232f108b2813dc22bb4f0af516220699af28347e95e96ec318170976d7cabf66150a9a3de033431b06b2
7
+ data.tar.gz: 8408367dc5eadf1fc7278bd9ad40a10ae557c842b53f32df5faeb1726e6f80fbdc7ba73614fc9f74762238a2eceb34042be4fbbb983c6ffdd2cab48c5d6baebf
data/README.md CHANGED
@@ -27,10 +27,10 @@ require 'roda'
27
27
  require 'hot_reloader'
28
28
 
29
29
  if ENV['RACK_ENV'] == 'production'
30
- HotReloader.eager_load(__dir__, 'another/root/path')
30
+ HotReloader.eager_load('path1', 'path2')
31
31
  run App
32
32
  else
33
- HotReloader.will_listen([__dir__, 'another/root/path'])
33
+ HotReloader.will_listen('path1', 'path2'')
34
34
  run ->(env) { App.call(env) }
35
35
  end
36
36
  ```
@@ -1,19 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'singleton'
4
3
  require 'zeitwerk'
5
4
  require 'listen'
6
5
 
7
6
  class HotReloader
8
- include Singleton
9
-
10
- # @private
11
- def initialize
12
- @loader = Zeitwerk::Loader.new
13
- end
14
-
15
7
  class << self
16
- # Listen folders for file change, and reload changed rb file,
8
+ # Listen on folders for file change, and reload changed rb file if necessary.
17
9
  # Should be used for development mode only.
18
10
  #
19
11
  # @param [*String, Array<String>] folders Folders which should be monitor, can be multi-args or array.
@@ -21,8 +13,19 @@ class HotReloader
21
13
  # @param [Array<String>] ignore Glob patterns or Pathname object which should be excluded.
22
14
  # @return nil
23
15
  def will_listen(*folders, logger: method(:puts), ignore: [])
16
+ loader = Zeitwerk::Loader.new
24
17
  folders = folders.flatten
25
- setup_loader(folders, logger: logger, ignore: ignore)
18
+
19
+ raise 'you must set the root folders from which you want to load watched files.' if folders&.empty?
20
+ raise 'ignore: only accept an array of glob patterns string or Pathname objects.' unless ignore.is_a? Array
21
+
22
+ folders.each {|folder| loader.push_dir(folder) }
23
+ loader.enable_reloading if loader.respond_to? :enable_reloading
24
+ loader.logger = logger
25
+
26
+ loader.ignore(ignore) unless ignore.empty?
27
+
28
+ loader.setup
26
29
  Listen.to(*folders, wait_for_delay: 1) { loader.reload }.start
27
30
  end
28
31
 
@@ -33,25 +36,16 @@ class HotReloader
33
36
  # @param [#call] logger logger or any object should response call.
34
37
  # @return nil
35
38
  def eager_load(*folders, logger: method(:puts))
39
+ loader = Zeitwerk::Loader.new
36
40
  folders = folders.flatten
37
- setup_loader(folders, logger: logger, ignore: [])
38
- loader.eager_load
39
- end
40
-
41
- private
42
41
 
43
- def loader
44
- instance.instance_variable_get(:@loader)
45
- end
46
-
47
- def setup_loader(folders, logger:, ignore:)
48
- raise 'ignore: only accept an array of glob patterns string or Pathname objects.' unless ignore.is_a? Array
49
42
  raise 'you must set the root folders from which you want to load watched files.' if folders&.empty?
50
43
 
51
44
  folders.each {|folder| loader.push_dir(folder) }
52
45
  loader.logger = logger
53
- loader.ignore(ignore) unless ignore.empty?
46
+
54
47
  loader.setup
48
+ loader.eager_load
55
49
  end
56
50
  end
57
51
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class HotReloader
4
- VERSION = '0.3.2'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hot_reloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Billy.Zheng(zw963)
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-31 00:00:00.000000000 Z
11
+ date: 2020-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: '2.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.4'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: listen
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +53,7 @@ homepage: http://github.com/zw963/hot_reloader
53
53
  licenses:
54
54
  - MIT
55
55
  metadata: {}
56
- post_install_message:
56
+ post_install_message:
57
57
  rdoc_options: []
58
58
  require_paths:
59
59
  - lib
@@ -69,7 +69,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  version: '0'
70
70
  requirements: []
71
71
  rubygems_version: 3.0.3
72
- signing_key:
72
+ signing_key:
73
73
  specification_version: 4
74
74
  summary: A dead simple ruby code hot reloader wrap around zeitwerk and listen.
75
75
  test_files: []