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.
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: []