thinappserver 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/bin/thinapp +35 -0
  3. data/lib/thinappserver.rb +87 -0
  4. 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: []