emmy-engine 0.2.6 → 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/emmy-engine.gemspec +1 -1
- data/lib/emmy.rb +9 -2
- data/lib/emmy/backend.rb +25 -0
- data/lib/emmy/runner.rb +69 -12
- data/lib/emmy/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b287cff45993922a60dd74dd1fe309d6683181b
|
4
|
+
data.tar.gz: 000276b49e6c8f1679ca5e20f8f55ce81a776703
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6ed1fd123c0676a7072cee623e0b1f1f4af8008999088501874ad18954318d9c7806588bbd795a57428d54a695fa95393465785fc7f000ff644bd1b3395810f
|
7
|
+
data.tar.gz: 4d8a2a6a5439d610bbe427eaa4e75866ec23ef71a8dfe34666aff4e27c8b3672ba93dff34908bf41e0128112ab70d1f6d15b2a9ac23ca8f3332f199eb3f28446
|
data/emmy-engine.gemspec
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
|
5
4
|
require 'emmy/version'
|
5
|
+
|
6
6
|
version = File.read(File.expand_path('../../EMMY_VERSION', __FILE__)).strip
|
7
7
|
if version != Emmy::VERSION
|
8
8
|
puts "Different version numbers"
|
data/lib/emmy.rb
CHANGED
@@ -8,8 +8,15 @@ module Emmy
|
|
8
8
|
include EventObject
|
9
9
|
include Fibre::Synchrony
|
10
10
|
|
11
|
-
autoload :Http,
|
12
|
-
autoload :
|
11
|
+
autoload :Http, 'emmy/http'
|
12
|
+
autoload :Backend, 'emmy/backend'
|
13
|
+
autoload :Runner, 'emmy/runner'
|
14
|
+
|
15
|
+
module_function
|
16
|
+
|
17
|
+
def env
|
18
|
+
Emmy::Runner.instance.config.environment
|
19
|
+
end
|
13
20
|
end
|
14
21
|
|
15
22
|
require 'emmy/version'
|
data/lib/emmy/backend.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
module Emmy
|
2
|
+
module Backend
|
3
|
+
extend EmmyMachine::ClassMethods
|
4
|
+
using Emmy
|
5
|
+
|
6
|
+
module_function
|
7
|
+
|
8
|
+
attr_reader :apps
|
9
|
+
|
10
|
+
def app(name: nil, &b)
|
11
|
+
@apps ||= {}
|
12
|
+
name ||= Emmy::Runner.instance.config.backend
|
13
|
+
|
14
|
+
if b
|
15
|
+
app = EmmyHttp::Application.new
|
16
|
+
app.instance_eval(&b)
|
17
|
+
@apps[name] = app
|
18
|
+
else
|
19
|
+
@apps[name]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
#<<<
|
24
|
+
end
|
25
|
+
end
|
data/lib/emmy/runner.rb
CHANGED
@@ -4,7 +4,7 @@ module Emmy
|
|
4
4
|
class Runner
|
5
5
|
include Singleton
|
6
6
|
using EventObject
|
7
|
-
events :parse
|
7
|
+
events :init, :parse
|
8
8
|
|
9
9
|
RUBY = Gem.ruby
|
10
10
|
BIN_EMMY = "bin/emmy"
|
@@ -33,6 +33,9 @@ module Emmy
|
|
33
33
|
on :parse do
|
34
34
|
update_rack_environment!
|
35
35
|
end
|
36
|
+
on :init do
|
37
|
+
initialize!
|
38
|
+
end
|
36
39
|
end
|
37
40
|
|
38
41
|
def execute_bin_emmy
|
@@ -62,8 +65,8 @@ module Emmy
|
|
62
65
|
"Default: #{config.url.host}") { |address| config.url.host = address }
|
63
66
|
opts.on("-b", "--backend NAME", "Backend name",
|
64
67
|
"Default: backend") { |name| config.backend = name }
|
65
|
-
opts.on("-d", "--daemonize",
|
66
|
-
opts.on("-s", "--
|
68
|
+
opts.on("-d", "--daemonize", "Runs server in the background") { @action = :daemonize_server }
|
69
|
+
opts.on("-s", "--servers NUM", "Number of servers to start") { |num| @action = :daemonize_server; config.servers = num.to_i; }
|
67
70
|
# actions
|
68
71
|
opts.on("-i", "--info", "Shows server configuration") { @action = :show_configuration }
|
69
72
|
opts.on("-c", "--console", "Start a console") { @action = :start_console }
|
@@ -78,14 +81,23 @@ module Emmy
|
|
78
81
|
config.group = "worker"
|
79
82
|
end
|
80
83
|
|
81
|
-
config.pid ||= "#{config.backend}.pid"
|
82
|
-
config.log ||= "#{config.backend}.log"
|
83
84
|
if config.environment == "development"
|
84
85
|
config.stdout = "#{config.backend}.stdout"
|
85
86
|
config.stderr = config.stdout
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
90
|
+
def initialize!
|
91
|
+
if config.servers > 1
|
92
|
+
config.url.port += config.id
|
93
|
+
config.pid = "#{config.backend}#{config.id}.pid"
|
94
|
+
config.log = "#{config.backend}#{config.id}.log"
|
95
|
+
else
|
96
|
+
config.pid = "#{config.backend}.pid"
|
97
|
+
config.log = "#{config.backend}.log"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
89
101
|
def run_action
|
90
102
|
# Run parsers
|
91
103
|
parse!
|
@@ -95,21 +107,48 @@ module Emmy
|
|
95
107
|
end
|
96
108
|
|
97
109
|
def daemonize_server
|
110
|
+
run_next_instance
|
111
|
+
end
|
112
|
+
|
113
|
+
def run_next_instance
|
114
|
+
if config.id >= config.servers
|
115
|
+
exit
|
116
|
+
end
|
117
|
+
|
98
118
|
Process.fork do
|
99
119
|
Process.setsid
|
100
|
-
|
120
|
+
if fork
|
121
|
+
config.id += 1
|
122
|
+
run_next_instance
|
123
|
+
end
|
124
|
+
|
125
|
+
Fibre.reset
|
126
|
+
# can load configuration
|
127
|
+
init.fire_for(self)
|
101
128
|
|
102
129
|
scope_pid(Process.pid) do |pid|
|
103
130
|
puts pid
|
104
|
-
File.umask(0000)
|
131
|
+
File.umask(0000)
|
105
132
|
bind_standard_streams
|
106
|
-
|
133
|
+
run
|
107
134
|
end
|
108
135
|
end
|
109
136
|
end
|
110
137
|
|
111
138
|
def start_server
|
112
|
-
|
139
|
+
init.fire_for(self)
|
140
|
+
run
|
141
|
+
end
|
142
|
+
|
143
|
+
def run
|
144
|
+
Emmy.run do
|
145
|
+
trap("INT") { Emmy.stop }
|
146
|
+
trap("TERM") { Emmy.stop }
|
147
|
+
|
148
|
+
Emmy.fiber_block do
|
149
|
+
Backend.module_eval(File.read(backend_file), backend_file)
|
150
|
+
end
|
151
|
+
end
|
113
152
|
end
|
114
153
|
|
115
154
|
def start_console
|
@@ -120,12 +159,13 @@ module Emmy
|
|
120
159
|
require 'irb'
|
121
160
|
require 'irb/completion'
|
122
161
|
|
123
|
-
|
162
|
+
IRB.start
|
124
163
|
end
|
125
164
|
end
|
126
165
|
end
|
127
166
|
|
128
167
|
def show_configuration
|
168
|
+
init.fire_for(self)
|
129
169
|
puts "Server configuration:"
|
130
170
|
config.attributes.each do |name, value|
|
131
171
|
value = "off" if value.nil?
|
@@ -146,13 +186,17 @@ module Emmy
|
|
146
186
|
exit
|
147
187
|
end
|
148
188
|
|
189
|
+
def configure(&b)
|
190
|
+
on :init, &b
|
191
|
+
end
|
192
|
+
|
149
193
|
private
|
150
194
|
|
151
195
|
def backend_file
|
152
196
|
thin = (config.backend == 'backend') ? EmmyExtends::Thin::EMMY_BACKEND : nil rescue nil
|
153
197
|
backends = [
|
154
|
-
"#{Dir.getwd}/#{config.backend}.
|
155
|
-
"#{Dir.getwd}/config/#{config.backend}.
|
198
|
+
"#{Dir.getwd}/#{config.backend}.em",
|
199
|
+
"#{Dir.getwd}/config/#{config.backend}.em",
|
156
200
|
thin
|
157
201
|
].compact
|
158
202
|
|
@@ -164,6 +208,7 @@ module Emmy
|
|
164
208
|
|
165
209
|
def scope_pid(pid)
|
166
210
|
FileUtils.mkdir_p(File.dirname(config.pid))
|
211
|
+
stop_pid(File.read(config.pid).to_i) if File.exists?(config.pid)
|
167
212
|
File.open(config.pid, 'w') { |f| f.write(pid) }
|
168
213
|
if block_given?
|
169
214
|
yield pid
|
@@ -171,6 +216,18 @@ module Emmy
|
|
171
216
|
end
|
172
217
|
end
|
173
218
|
|
219
|
+
def stop_pid(pid)
|
220
|
+
unless pid.zero?
|
221
|
+
Process.kill("TERM", pid)
|
222
|
+
puts "Restarting..."
|
223
|
+
while File.exists?(config.pid)
|
224
|
+
sleep(0.1)
|
225
|
+
end
|
226
|
+
#Process.wait(pid)
|
227
|
+
end
|
228
|
+
rescue
|
229
|
+
end
|
230
|
+
|
174
231
|
def delete_pid
|
175
232
|
File.delete(config.pid)
|
176
233
|
end
|
data/lib/emmy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emmy-engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- inre
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: emmy-machine
|
@@ -124,6 +124,7 @@ files:
|
|
124
124
|
- bin/emmy
|
125
125
|
- emmy-engine.gemspec
|
126
126
|
- lib/emmy.rb
|
127
|
+
- lib/emmy/backend.rb
|
127
128
|
- lib/emmy/http.rb
|
128
129
|
- lib/emmy/runner.rb
|
129
130
|
- lib/emmy/version.rb
|