emmy-engine 0.2.6 → 0.2.8
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 +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
|