hot_reloader 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: []