roda-live_reload 0.1.2 → 0.2.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
  SHA1:
3
- metadata.gz: 1f8faae85a0ba898de7ce83d5b905570d07ecaa4
4
- data.tar.gz: b83c72c1b71e96d5e15565efafbbcc1e90398993
3
+ metadata.gz: 6367cdd275c3f632b6c937cfbc7d7d58010c77cb
4
+ data.tar.gz: 7f72d32b0be9a90cb99541459b961ea683f1a011
5
5
  SHA512:
6
- metadata.gz: ded2a543fc75e3ceab786041e7dce1761e7f3516f563169d858fc2b56541c098e650d11a55746302428e9e6f63c2fb4851e605f8980bcb33729e1299d1e04a9c
7
- data.tar.gz: b13e1dd71c80ed0b84a3fafbf5ce8f07ceadc4c299e8d27e96f0cb16a511850cf602593064724149176eb7b97f22b5b02eb2f32b2b325f7816ac02cf814ea76b
6
+ metadata.gz: 547ea080239703245875cd61f518887c115c8b6b3a0fdfd1602dd15869e9c723004590a1004256f28cc0e51ac96d8a6ac62e3e800fa88d5777c358fa24433c2a
7
+ data.tar.gz: bec1dd5b716392ec227559739d810f9fa2a9e6ac26594a22f961c9831aaa477dd6036068f6e0e6e9f6d46752585f41344b234563b8ac62a122608c4f031ba599
data/README.md CHANGED
@@ -38,6 +38,13 @@ class App < Roda
38
38
  end
39
39
  ```
40
40
 
41
+ ## Caveats
42
+
43
+ Live Reloading mechanism may not work with Webrick. Tested with Puma.
44
+
45
+ A new SIGINT trap is set per request, possibly bulldozing any previously set SIGINT.
46
+ This may not be an issue for most, but it's something to be aware of.
47
+
41
48
  ## Contributing
42
49
 
43
50
  Bug reports and pull requests are welcome on GitHub at https://github.com/adam12/roda-live_reload.
@@ -26,7 +26,14 @@ module Roda::RodaPlugins # :nodoc:
26
26
 
27
27
  xhr.open("GET", "/_live_reload", true);
28
28
 
29
- xhr.onprogress = function() {
29
+ xhr.onprogress = function(e) {
30
+ /* Try to prevent memory leak */
31
+ if (e.loaded > 1000) {
32
+ window.location.reload();
33
+ }
34
+ };
35
+
36
+ xhr.onload = function(e) {
30
37
  window.location.reload();
31
38
  };
32
39
 
@@ -35,10 +42,9 @@ module Roda::RodaPlugins # :nodoc:
35
42
  setTimeout(reconnect, 1000);
36
43
  };
37
44
 
38
- xhr.onabort = function() {
39
- console.log("Reconnecting after abort");
40
- setTimeout(reconnect, 1000);
41
- };
45
+ window.addEventListener("beforeunload", function(e) {
46
+ xhr.abort();
47
+ }, true);
42
48
 
43
49
  xhr.send();
44
50
  })();
@@ -66,14 +72,26 @@ module Roda::RodaPlugins # :nodoc:
66
72
  # Setup the live reload endpoint
67
73
  def live_reload(opts = {}, &block)
68
74
  on("_live_reload") do
75
+ logger.info "Live Reload listener attached" if logger
69
76
  reader, writer = IO.pipe
70
77
 
71
78
  LiveReload.synchronize do
72
79
  LiveReload.listeners.push(writer)
73
80
  end
74
81
 
82
+ # I wish Rack would provide a shutdown indicator
83
+ trap(:INT) { exit }
84
+
75
85
  scope.stream(loop: true) do |out|
76
- out << reader.gets
86
+ if IO.select([reader], nil, nil, 1)
87
+ out.close
88
+ else
89
+ out << 0
90
+ end
91
+ end
92
+
93
+ LiveReload.synchronize do
94
+ LiveReload.listeners.delete(writer)
77
95
  end
78
96
  end
79
97
  end
@@ -104,7 +122,13 @@ module Roda::RodaPlugins # :nodoc:
104
122
  puts "Changes", modified, added, removed
105
123
 
106
124
  LiveReload.listeners.each do |writer|
107
- writer.puts "Changes"
125
+ begin
126
+ writer << 1
127
+ rescue Errno::EPIPE
128
+ LiveReload.synchronize do
129
+ LiveReload.listeners.delete(writer)
130
+ end
131
+ end
108
132
  end
109
133
  end
110
134
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roda-live_reload
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Daniels
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-16 00:00:00.000000000 Z
11
+ date: 2017-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: roda
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: '0'
87
87
  requirements: []
88
88
  rubyforge_project:
89
- rubygems_version: 2.6.12
89
+ rubygems_version: 2.6.13
90
90
  signing_key:
91
91
  specification_version: 4
92
92
  summary: Live reloading for Roda