thinappserver 0.0.3
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 +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: []
|