ringleader 0.0.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/README.md +61 -22
  2. data/assets/app.js +106 -0
  3. data/assets/backbone-min.js +38 -0
  4. data/assets/bootstrap/css/bootstrap-responsive.css +815 -0
  5. data/assets/bootstrap/css/bootstrap-responsive.min.css +9 -0
  6. data/assets/bootstrap/css/bootstrap.css +4983 -0
  7. data/assets/bootstrap/css/bootstrap.min.css +9 -0
  8. data/assets/bootstrap/img/glyphicons-halflings-white.png +0 -0
  9. data/assets/bootstrap/img/glyphicons-halflings.png +0 -0
  10. data/assets/bootstrap/js/bootstrap.js +1825 -0
  11. data/assets/bootstrap/js/bootstrap.min.js +6 -0
  12. data/assets/favicon.ico +0 -0
  13. data/assets/index.html +129 -0
  14. data/assets/jquery-1.7.2.min.js +4 -0
  15. data/assets/jquery.mustache.js +636 -0
  16. data/assets/top_hat.png +0 -0
  17. data/assets/underscore-min.js +32 -0
  18. data/dev_scripts/Procfile +3 -2
  19. data/dev_scripts/stubborn.rb +4 -0
  20. data/dev_scripts/test.yml +4 -2
  21. data/dev_scripts/wait_fork_tree.rb +15 -0
  22. data/dev_scripts/wait_test.rb +25 -0
  23. data/dev_scripts/webserver.rb +4 -0
  24. data/lib/ringleader.rb +7 -1
  25. data/lib/ringleader/app.rb +88 -121
  26. data/lib/ringleader/app_serializer.rb +15 -0
  27. data/lib/ringleader/cli.rb +43 -56
  28. data/lib/ringleader/config.rb +58 -15
  29. data/lib/ringleader/controller.rb +30 -0
  30. data/lib/ringleader/process.rb +145 -0
  31. data/lib/ringleader/server.rb +116 -0
  32. data/lib/ringleader/version.rb +1 -1
  33. data/lib/ringleader/wait_for_exit.rb +1 -1
  34. data/ringleader.gemspec +1 -0
  35. data/screenshot.png +0 -0
  36. data/spec/fixtures/config.yml +1 -1
  37. data/spec/fixtures/no_app_port.yml +5 -0
  38. data/spec/fixtures/no_server_port.yml +6 -0
  39. data/spec/fixtures/rvm.yml +6 -0
  40. data/spec/ringleader/config_spec.rb +25 -2
  41. metadata +48 -3
  42. data/lib/ringleader/app_proxy.rb +0 -61
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ringleader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-20 00:00:00.000000000 Z
12
+ date: 2012-08-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: celluloid
@@ -43,6 +43,22 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.11.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: reel
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.1.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.1.0
46
62
  - !ruby/object:Gem::Dependency
47
63
  name: trollop
48
64
  requirement: !ruby/object:Gem::Requirement
@@ -139,6 +155,22 @@ files:
139
155
  - LICENSE
140
156
  - README.md
141
157
  - Rakefile
158
+ - assets/app.js
159
+ - assets/backbone-min.js
160
+ - assets/bootstrap/css/bootstrap-responsive.css
161
+ - assets/bootstrap/css/bootstrap-responsive.min.css
162
+ - assets/bootstrap/css/bootstrap.css
163
+ - assets/bootstrap/css/bootstrap.min.css
164
+ - assets/bootstrap/img/glyphicons-halflings-white.png
165
+ - assets/bootstrap/img/glyphicons-halflings.png
166
+ - assets/bootstrap/js/bootstrap.js
167
+ - assets/bootstrap/js/bootstrap.min.js
168
+ - assets/favicon.ico
169
+ - assets/index.html
170
+ - assets/jquery-1.7.2.min.js
171
+ - assets/jquery.mustache.js
172
+ - assets/top_hat.png
173
+ - assets/underscore-min.js
142
174
  - bin/ringleader
143
175
  - dev_scripts/Procfile
144
176
  - dev_scripts/echo_server.rb
@@ -147,19 +179,29 @@ files:
147
179
  - dev_scripts/sleep_loop.rb
148
180
  - dev_scripts/stubborn.rb
149
181
  - dev_scripts/test.yml
182
+ - dev_scripts/wait_fork_tree.rb
183
+ - dev_scripts/wait_test.rb
184
+ - dev_scripts/webserver.rb
150
185
  - lib/ringleader.rb
151
186
  - lib/ringleader/app.rb
152
- - lib/ringleader/app_proxy.rb
187
+ - lib/ringleader/app_serializer.rb
153
188
  - lib/ringleader/cli.rb
154
189
  - lib/ringleader/config.rb
190
+ - lib/ringleader/controller.rb
155
191
  - lib/ringleader/name_logger.rb
192
+ - lib/ringleader/process.rb
193
+ - lib/ringleader/server.rb
156
194
  - lib/ringleader/socket_proxy.rb
157
195
  - lib/ringleader/version.rb
158
196
  - lib/ringleader/wait_for_exit.rb
159
197
  - lib/ringleader/wait_for_port.rb
160
198
  - ringleader.gemspec
199
+ - screenshot.png
161
200
  - spec/fixtures/config.yml
162
201
  - spec/fixtures/invalid.yml
202
+ - spec/fixtures/no_app_port.yml
203
+ - spec/fixtures/no_server_port.yml
204
+ - spec/fixtures/rvm.yml
163
205
  - spec/ringleader/config_spec.rb
164
206
  - spec/spec_helper.rb
165
207
  homepage: https://github.com/aniero/ringleader
@@ -189,5 +231,8 @@ summary: Proxy TCP connections to an on-demand pool of configured applications
189
231
  test_files:
190
232
  - spec/fixtures/config.yml
191
233
  - spec/fixtures/invalid.yml
234
+ - spec/fixtures/no_app_port.yml
235
+ - spec/fixtures/no_server_port.yml
236
+ - spec/fixtures/rvm.yml
192
237
  - spec/ringleader/config_spec.rb
193
238
  - spec/spec_helper.rb
@@ -1,61 +0,0 @@
1
- module Ringleader
2
-
3
- # Proxy for an application running on a given port.
4
- class AppProxy
5
- include Celluloid::IO
6
- include Celluloid::Logger
7
-
8
- attr_reader :config
9
-
10
- # Create a new AppProxy instance
11
- #
12
- # app - the application to proxy to
13
- # config - a configuration object for this app
14
- def initialize(app, config)
15
- @config = config
16
- @app = app
17
- @server = TCPServer.new config.hostname, config.server_port
18
- run!
19
- rescue Errno::EADDRINUSE
20
- error "could not bind to #{config.hostname}:#{config.server_port} for #{config.name}!"
21
- end
22
-
23
- def finalize
24
- @server.close if @server
25
- end
26
-
27
- def run
28
- start_activity_timer if config.idle_timeout > 0
29
- info "server listening for connections for #{config.name} on #{config.hostname}:#{config.server_port}"
30
- loop { handle_connection! @server.accept }
31
- end
32
-
33
- def handle_connection(socket)
34
- _, port, host = socket.peeraddr
35
- debug "received connection from #{host}:#{port}"
36
-
37
- started = @app.start
38
- if started
39
- proxy_to_app! socket
40
- @activity_timer.reset if @activity_timer
41
- else
42
- error "could not start app"
43
- socket.close
44
- end
45
- end
46
-
47
- def proxy_to_app(socket)
48
- SocketProxy.new socket, config.hostname, config.app_port
49
- end
50
-
51
- def start_activity_timer
52
- @activity_timer = every config.idle_timeout do
53
- if @app.running?
54
- info "#{config.name} has been idle for #{config.idle_timeout} seconds, shutting it down"
55
- @app.stop
56
- end
57
- end
58
- end
59
- end
60
-
61
- end