react-rails-hot-loader 0.2.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 +4 -4
- data/lib/hot_loader/railtie.rb +11 -4
- data/lib/hot_loader/server.rb +23 -16
- data/lib/hot_loader/version.rb +1 -1
- data/react-rails-hot-loader.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6e83238b5557bc6c6decdb17fd085f2de6417ea7
|
|
4
|
+
data.tar.gz: cd502ba5a6f1628240806b4e87e2d9e6c6053769
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37f574e95527201e7a5ba90ec339867c6e925d6678d3c45eb80f341ba34dcec1240ce7f8b1b3b30d7d761ce3ab0d270acbe7861c112070fdee3e1eed5c7ed5e8
|
|
7
|
+
data.tar.gz: c7b8887ae4e57aa06e00be047b413630ebb7572362d3b3678af33bc70e358a88ce96c05f4a817f1a7ed9e438b2fd1c1628b32ef619af8774a043e722e51b715c
|
data/lib/hot_loader/railtie.rb
CHANGED
|
@@ -9,10 +9,17 @@ module React
|
|
|
9
9
|
|
|
10
10
|
config.after_initialize do |app|
|
|
11
11
|
ActionDispatch::Reloader.to_prepare do
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
React::Rails::HotLoader.restart
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
if defined?(PhusionPassenger)
|
|
16
|
+
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
|
17
|
+
if forked
|
|
18
|
+
# We're in smart spawning mode.
|
|
19
|
+
React::Rails::HotLoader.restart
|
|
20
|
+
else
|
|
21
|
+
# We're in direct spawning mode. We don't need to do anything.
|
|
22
|
+
end
|
|
16
23
|
end
|
|
17
24
|
end
|
|
18
25
|
end
|
data/lib/hot_loader/server.rb
CHANGED
|
@@ -14,7 +14,6 @@ module React
|
|
|
14
14
|
|
|
15
15
|
# Restarts the server _if_ it has stopped
|
|
16
16
|
def restart
|
|
17
|
-
return if running?
|
|
18
17
|
start
|
|
19
18
|
rescue StandardError => err
|
|
20
19
|
React::Rails::HotLoader.error(err)
|
|
@@ -22,10 +21,6 @@ module React
|
|
|
22
21
|
|
|
23
22
|
private
|
|
24
23
|
|
|
25
|
-
def running?
|
|
26
|
-
@server_thread && @server_thread.alive?
|
|
27
|
-
end
|
|
28
|
-
|
|
29
24
|
def start
|
|
30
25
|
@server_thread = Thread.new do
|
|
31
26
|
begin
|
|
@@ -36,18 +31,14 @@ module React
|
|
|
36
31
|
end
|
|
37
32
|
end
|
|
38
33
|
|
|
34
|
+
# If the Rails server runs event machine already,
|
|
35
|
+
# don't run EventMachine again, instead hook in with `next_tick`
|
|
39
36
|
def serve
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
EM
|
|
44
|
-
|
|
45
|
-
ws.onmessage { |msg| handle_message(ws, msg) }
|
|
46
|
-
ws.onclose { React::Rails::HotLoader.log("closed a connection") }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
React::Rails::HotLoader.log("started WS server")
|
|
50
|
-
}
|
|
37
|
+
if already_has_event_machine_server?
|
|
38
|
+
EM.next_tick { run_websocket_server }
|
|
39
|
+
else
|
|
40
|
+
EM.run { run_websocket_server }
|
|
41
|
+
end
|
|
51
42
|
end
|
|
52
43
|
|
|
53
44
|
# Check for any changes since `msg`, respond if there are any changes
|
|
@@ -62,6 +53,22 @@ module React
|
|
|
62
53
|
rescue StandardError => err
|
|
63
54
|
React::Rails::HotLoader.error(err)
|
|
64
55
|
end
|
|
56
|
+
|
|
57
|
+
def run_websocket_server
|
|
58
|
+
React::Rails::HotLoader.log("starting WS server: ws://#{host}:#{port}")
|
|
59
|
+
|
|
60
|
+
EM::WebSocket.run(host: host, port: port) do |ws|
|
|
61
|
+
ws.onopen { React::Rails::HotLoader.log("opened a connection") }
|
|
62
|
+
ws.onmessage { |msg| handle_message(ws, msg) }
|
|
63
|
+
ws.onclose { React::Rails::HotLoader.log("closed a connection") }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
React::Rails::HotLoader.log("started WS server")
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def already_has_event_machine_server?
|
|
70
|
+
defined?(Thin)
|
|
71
|
+
end
|
|
65
72
|
end
|
|
66
73
|
end
|
|
67
74
|
end
|
data/lib/hot_loader/version.rb
CHANGED
|
@@ -31,5 +31,6 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.add_development_dependency "minitest"
|
|
32
32
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
33
33
|
spec.add_development_dependency "sqlite3"
|
|
34
|
+
spec.add_development_dependency "thin"
|
|
34
35
|
spec.add_development_dependency "websocket-client-simple"
|
|
35
36
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: react-rails-hot-loader
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Robert Mosolgo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-08-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: em-websocket
|
|
@@ -164,6 +164,20 @@ dependencies:
|
|
|
164
164
|
- - ">="
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: thin
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - ">="
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '0'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - ">="
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '0'
|
|
167
181
|
- !ruby/object:Gem::Dependency
|
|
168
182
|
name: websocket-client-simple
|
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|