thinappserver 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/bin/thinapp +35 -0
- data/lib/thinappserver.rb +87 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MzY4ZmNiZDBjNjQ0MmU1OGM0YzYzMDUwYzcwODFjNWNlNDdkMTk0Nw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MTk2MTk4YzQ5MzhjYjFiMTdlNzE3ODNjNDFjYjRkZWE3NjExNzhkZA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NTRkNThiZDIwMmRiYzkwMGY1OTA0Yzc1ODI2NTM2MWYxMzM1MjVlZGNkYjc2
|
10
|
+
Yjk1YmZiYTA3ZTBmMTYyZmIzOWUxMjY5MzFhZDUwNDI5ZTYxNmU4YTkyNzY3
|
11
|
+
OTNlYzA4NzRjNjQ1MjkwNWU1ZWUwZDJlNzg2N2YzNGVhYzNjZmQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YzhkZDE3YWNkOGU0MWI5OThhZDI4NjE2ZmJlMDk1OWE5ZTVlYjRhMWI3YTFi
|
14
|
+
ZTRkOWVhM2ZmNjA0Y2ExNTJhNGRiNDkxOGM2ZjEwYTIwYzVkYjYyOTI1ZTYy
|
15
|
+
MjNhMTlhZTg2ZmZkNTNmMTQ0NzMxNTYxZjFiY2ZhNzIzNWU1ODk=
|
data/bin/thinapp
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'thinappserver'
|
4
|
+
require 'optitron'
|
5
|
+
require 'pp'
|
6
|
+
|
7
|
+
|
8
|
+
$appserver = ThinAppServer.new("config.json")
|
9
|
+
|
10
|
+
class Runner < Optitron::CLI
|
11
|
+
#class_opt "verbose", "Print what the script is doing, default is on" ,:default => true
|
12
|
+
|
13
|
+
|
14
|
+
desc "Start all applications in config.json or an individual application by name"
|
15
|
+
def start(server = "all")
|
16
|
+
$appserver.startServers(server)
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "Stop all applications in config.json or an individual application by name"
|
20
|
+
def stop(server = "all")
|
21
|
+
$appserver.kill(server)
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Kill an application by application name"
|
25
|
+
def kill(servername)
|
26
|
+
$appserver.killone(servername)
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "Get the status of the applications"
|
30
|
+
def status
|
31
|
+
$appserver.status
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
Runner.dispatch
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
class ThinAppServer
|
4
|
+
def initialize(config)
|
5
|
+
contents = File.read(config);
|
6
|
+
@config = JSON.parse(contents)
|
7
|
+
@verbose = "true"
|
8
|
+
@servers = @config["servers"]
|
9
|
+
end
|
10
|
+
|
11
|
+
def startServers(name)
|
12
|
+
if(name != "all")
|
13
|
+
startOne(name)
|
14
|
+
return;
|
15
|
+
end
|
16
|
+
@servers.each do |server|
|
17
|
+
server = server["name"]
|
18
|
+
type = server["type"]
|
19
|
+
|
20
|
+
if(type == "external")
|
21
|
+
return;
|
22
|
+
end
|
23
|
+
settings = File.read(server+"/config.json")
|
24
|
+
props = JSON.parse(settings)
|
25
|
+
log "Starting server: "+server+" ..."
|
26
|
+
if(!File.exists? server+"/"+server+".running")
|
27
|
+
system("cd "+server+" && thin start -p"+props["port"]+" -d -P "+server+".running")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def kill(name)
|
33
|
+
if(name != "all")
|
34
|
+
killone(name)
|
35
|
+
return
|
36
|
+
end
|
37
|
+
@servers.each do |server|
|
38
|
+
server = server["name"]
|
39
|
+
type = server["type"]
|
40
|
+
|
41
|
+
if(type == "external")
|
42
|
+
return;
|
43
|
+
end
|
44
|
+
|
45
|
+
if(File.exists? server+"/"+server+".running")
|
46
|
+
system("cd "+server+" && kill `cat "+server+".running`");
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def killone(name)
|
52
|
+
puts "Stopping "+name
|
53
|
+
system("cd "+name+" && kill `cat "+name+".running`");
|
54
|
+
end
|
55
|
+
|
56
|
+
def startOne(name)
|
57
|
+
settings = File.read(name+"/config.json")
|
58
|
+
props = JSON.parse(settings)
|
59
|
+
system("cd "+name+" && thin start -p "+props["port"]+" -d -P "+name+".running");
|
60
|
+
end
|
61
|
+
|
62
|
+
def log(msg)
|
63
|
+
if(@verbose)
|
64
|
+
puts msg
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def status
|
69
|
+
puts "##### NOTE #### Server status is not working for external applications right now ##### NOTE #######"
|
70
|
+
@servers.each do |server|
|
71
|
+
server = server["name"]
|
72
|
+
type = server["type"]
|
73
|
+
|
74
|
+
if(type == "external")
|
75
|
+
return;
|
76
|
+
end
|
77
|
+
if(File.exists? server+"/"+server+".running")
|
78
|
+
settings = File.read(server+"/config.json")
|
79
|
+
props = JSON.parse(settings)
|
80
|
+
log "Application: "+server+", is RUNNING on port "+props["port"]
|
81
|
+
else
|
82
|
+
log "Application: "+server+", is NOT RUNNING"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: thinappserver
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nick Quaranto
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-06-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.5.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.5.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: optitron
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.0
|
41
|
+
description: ! '....'
|
42
|
+
email: nick@quaran.to
|
43
|
+
executables:
|
44
|
+
- thinapp
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/thinappserver.rb
|
49
|
+
- bin/thinapp
|
50
|
+
homepage: http://rubygems.org/gems/hola
|
51
|
+
licenses: []
|
52
|
+
metadata: {}
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
require_paths:
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
requirements:
|
68
|
+
- Sinatra and thin command must be available
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 2.0.3
|
71
|
+
signing_key:
|
72
|
+
specification_version: 4
|
73
|
+
summary: Thin Application Server
|
74
|
+
test_files: []
|