riddl 0.99.199 → 0.99.200
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/examples/library/server-9292.pid +1 -0
- data/examples/library/{server → server.rb} +0 -0
- data/lib/ruby/riddl/server.rb +88 -79
- data/riddl.gemspec +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c67aa38ff11dcb881b3ea8653e11d12da9611687
|
4
|
+
data.tar.gz: cb1bde4833c693dae96bd714d1d30b38e78b798a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5229e2f25d0b333031a6ee59e097056a9653f198924245d2f4b16c4914c37d6f8a25a5068696aa6c390be9fd7618f63dd2ea2a77a99dbfea266e28a53ce2a9f
|
7
|
+
data.tar.gz: c4743b2544bf733c8e24339c61503d19f895a6b8b3562d31ceb23f9e364362043597bf9f440973c6a540dd23c0ede4ab3a0367daf46f137b9d5bffb28cbae89c
|
@@ -0,0 +1 @@
|
|
1
|
+
24293
|
File without changes
|
data/lib/ruby/riddl/server.rb
CHANGED
@@ -38,47 +38,26 @@ module Riddl
|
|
38
38
|
end
|
39
39
|
@headers.compact!
|
40
40
|
@response.compact!
|
41
|
-
@headers = Hash[ @headers.map{ |h| [h.name, h.value] } ]
|
41
|
+
@headers = Hash[ @headers.map{ |h| [h.name, h.value] } ]
|
42
42
|
end
|
43
43
|
end #}}}
|
44
44
|
|
45
|
-
OPTS = {
|
45
|
+
OPTS = {
|
46
46
|
:host => 'localhost',
|
47
47
|
:port => 9292,
|
48
48
|
:secure => false,
|
49
49
|
:mode => :debug,
|
50
|
+
:verbose => false,
|
51
|
+
:http_only => false,
|
50
52
|
:basepath => File.expand_path(File.dirname($0)),
|
51
53
|
:pidfile => File.basename($0,'.rb') + '.pid',
|
52
54
|
:conffile => File.basename($0,'.rb') + '.conf',
|
53
|
-
:runtime_options => []
|
55
|
+
:runtime_options => [],
|
56
|
+
:cmdl_parsing => true,
|
57
|
+
:cmdl_operation => 'start'
|
54
58
|
}
|
55
59
|
|
56
60
|
def loop! #{{{
|
57
|
-
########################################################################################################################
|
58
|
-
# parse arguments
|
59
|
-
########################################################################################################################
|
60
|
-
verbose = false
|
61
|
-
http_only = false
|
62
|
-
operation = "start"
|
63
|
-
ARGV.options { |opt|
|
64
|
-
opt.summary_indent = ' ' * 4
|
65
|
-
opt.banner = "Usage:\n#{opt.summary_indent}ruby server.rb [options] start|stop|restart|info" + (@riddl_opts[:runtime_options].length > 0 ? '|' : '') + @riddl_opts[:runtime_options].map{|ro| ro[0]}.join('|') + "\n"
|
66
|
-
opt.on("Options:")
|
67
|
-
opt.on("--http-only", "-s", "Only http, no other protocols.") { http_only = true }
|
68
|
-
opt.on("--verbose", "-v", "Do not daemonize. Write ouput to console.") { verbose = true }
|
69
|
-
opt.on("--help", "-h", "This text.") { puts opt; exit }
|
70
|
-
opt.separator(opt.summary_indent + "start|stop|restart|info".ljust(opt.summary_width+1) + "Do operation start, stop, restart or get information.")
|
71
|
-
@riddl_opts[:runtime_options].each do |ro|
|
72
|
-
opt.separator(opt.summary_indent + ro[0].ljust(opt.summary_width+1) + ro[1])
|
73
|
-
end
|
74
|
-
opt.parse!
|
75
|
-
}
|
76
|
-
unless (%w{start stop restart info} + @riddl_opts[:runtime_options].map{|ro| ro[0] }).include?(ARGV[0])
|
77
|
-
puts ARGV.options
|
78
|
-
exit
|
79
|
-
end
|
80
|
-
operation = ARGV[0]
|
81
|
-
|
82
61
|
########################################################################################################################
|
83
62
|
# status and info
|
84
63
|
########################################################################################################################
|
@@ -91,11 +70,11 @@ module Riddl
|
|
91
70
|
false
|
92
71
|
end
|
93
72
|
end
|
94
|
-
if
|
73
|
+
if @riddl_opts[:cmdl_operation] == "info" && status.call == false
|
95
74
|
puts "Server (#{@riddl_opts[:url]}) not running"
|
96
75
|
exit
|
97
76
|
end
|
98
|
-
if
|
77
|
+
if @riddl_opts[:cmdl_operation] == "info" && status.call == true
|
99
78
|
puts "Server (#{@riddl_opts[:url]}) running as #{pid}"
|
100
79
|
begin
|
101
80
|
stats = `ps -o "vsz,rss,lstart,time" -p #{pid}`.split("\n")[1].strip.split(/ +/)
|
@@ -107,15 +86,15 @@ module Riddl
|
|
107
86
|
end
|
108
87
|
exit
|
109
88
|
end
|
110
|
-
if %w{start}.include?(
|
89
|
+
if %w{start}.include?(@riddl_opts[:cmdl_operation]) && status.call == true
|
111
90
|
puts "Server (#{@riddl_opts[:url]}) already started"
|
112
91
|
exit
|
113
92
|
end
|
114
|
-
|
93
|
+
|
115
94
|
########################################################################################################################
|
116
95
|
# stop/restart server
|
117
96
|
########################################################################################################################
|
118
|
-
if %w{stop restart}.include?(
|
97
|
+
if %w{stop restart}.include?(@riddl_opts[:cmdl_operation])
|
119
98
|
if status.call == false
|
120
99
|
puts "Server (#{@riddl_opts[:url]}) maybe not started?"
|
121
100
|
else
|
@@ -124,16 +103,16 @@ module Riddl
|
|
124
103
|
while status.call
|
125
104
|
Process.kill "SIGTERM", pid
|
126
105
|
sleep 0.3
|
127
|
-
end
|
106
|
+
end
|
128
107
|
end
|
129
|
-
exit unless
|
108
|
+
exit unless @riddl_opts[:cmdl_operation] == "restart"
|
130
109
|
end
|
131
|
-
|
110
|
+
|
132
111
|
########################################################################################################################
|
133
112
|
# go through user defined startup thingis
|
134
113
|
########################################################################################################################
|
135
114
|
@riddl_opts[:runtime_options].each do |ro|
|
136
|
-
ro[2].call(status.call) if
|
115
|
+
ro[2].call(status.call) if @riddl_opts[:cmdl_operation] == ro[0]
|
137
116
|
end
|
138
117
|
|
139
118
|
app = Rack::Builder.new self
|
@@ -145,19 +124,19 @@ module Riddl
|
|
145
124
|
:app => app,
|
146
125
|
:Host => '0.0.0.0',
|
147
126
|
:Port => @riddl_opts[:port],
|
148
|
-
:environment => verbose ? 'deployment' : 'none',
|
127
|
+
:environment => @riddl_opts[:verbose] ? 'deployment' : 'none',
|
149
128
|
:server => 'thin',
|
150
129
|
:pid => File.expand_path(@riddl_opts[:basepath] + '/' + @riddl_opts[:pidfile]),
|
151
130
|
:signals => false
|
152
131
|
)
|
153
132
|
|
154
133
|
puts "Server (#{@riddl_opts[:url]}) started as PID:#{Process.pid}"
|
155
|
-
puts "XMPP support (#{@riddl_xmpp_jid}) active" if @riddl_xmpp_jid && @riddl_xmpp_pass &&
|
156
|
-
Process.daemon(@riddl_opts[:basepath]) unless verbose
|
134
|
+
puts "XMPP support (#{@riddl_xmpp_jid}) active" if @riddl_xmpp_jid && @riddl_xmpp_pass && !@riddl_opts[:http_only]
|
135
|
+
Process.daemon(@riddl_opts[:basepath]) unless @riddl_opts[:verbose]
|
157
136
|
Dir.chdir(@riddl_opts[:basepath])
|
158
137
|
::Kernel::at_exit do
|
159
138
|
@riddl_at_exit.call if @riddl_at_exit
|
160
|
-
end
|
139
|
+
end
|
161
140
|
begin
|
162
141
|
EM.run do
|
163
142
|
if @riddl_opts[:secure]
|
@@ -170,7 +149,7 @@ module Riddl
|
|
170
149
|
end
|
171
150
|
|
172
151
|
@riddl_opts[:xmpp] = nil
|
173
|
-
if @riddl_xmpp_jid && @riddl_xmpp_pass &&
|
152
|
+
if @riddl_xmpp_jid && @riddl_xmpp_pass && !@riddl_opts[:http_only]
|
174
153
|
xmpp = Blather::Client.setup @riddl_xmpp_jid, @riddl_xmpp_pass
|
175
154
|
@riddl_opts[:xmpp] = xmpp
|
176
155
|
xmpp.register_handler(:message, '/message/ns:operation', :ns => 'http://riddl.org/ns/xmpp-rest') do |m|
|
@@ -198,14 +177,14 @@ module Riddl
|
|
198
177
|
Signal.trap(signal) do
|
199
178
|
EM.stop
|
200
179
|
end
|
201
|
-
end
|
180
|
+
end
|
202
181
|
|
203
182
|
end
|
204
183
|
|
205
|
-
rescue => e
|
184
|
+
rescue => e
|
206
185
|
if e.is_a?(Blather::Stream::ConnectionFailed)
|
207
186
|
puts "Server (#{@riddl_xmpp_jid}) stopped due to connection error (PID:#{Process.pid})"
|
208
|
-
else
|
187
|
+
else
|
209
188
|
puts "Server (#{@riddl_opts[:url]}) stopped due to connection error (PID:#{Process.pid})"
|
210
189
|
end
|
211
190
|
end
|
@@ -215,19 +194,49 @@ module Riddl
|
|
215
194
|
|
216
195
|
def initialize(riddl,opts={},&blk)# {{{
|
217
196
|
@riddl_opts = {}
|
218
|
-
@riddl_opts = OPTS.merge(opts)
|
197
|
+
@riddl_opts = OPTS.merge(opts)
|
219
198
|
|
220
199
|
if File.exists?(@riddl_opts[:basepath] + '/' + @riddl_opts[:conffile])
|
221
200
|
@riddl_opts.merge!(Psych::load_file(@riddl_opts[:basepath] + '/' + @riddl_opts[:conffile]))
|
222
201
|
end
|
202
|
+
|
203
|
+
########################################################################################################################
|
204
|
+
# parse arguments
|
205
|
+
########################################################################################################################
|
206
|
+
if @riddl_opts[:cmdl_parsing]
|
207
|
+
@riddl_opts[:cmdl_operation] = "start"
|
208
|
+
ARGV.options { |opt|
|
209
|
+
opt.summary_indent = ' ' * 4
|
210
|
+
opt.banner = "Usage:\n#{opt.summary_indent}ruby server.rb [options] start|stop|restart|info" + (@riddl_opts[:runtime_options].length > 0 ? '|' : '') + @riddl_opts[:runtime_options].map{|ro| ro[0]}.join('|') + "\n"
|
211
|
+
opt.on("Options:")
|
212
|
+
opt.on("--port [PORT]", "-p [PORT]", "Specify http port.") do |p|
|
213
|
+
@riddl_opts[:port] = p.to_i
|
214
|
+
@riddl_opts[:pidfile] = @riddl_opts[:pidfile].gsub(/\.pid/,'') + '-' + @riddl_opts[:port].to_s + '.pid'
|
215
|
+
end
|
216
|
+
opt.on("--http-only", "-s", "Only http, no other protocols.") { @riddl_opts[:http_only] = true }
|
217
|
+
opt.on("--verbose", "-v", "Do not daemonize. Write ouput to console.") { @riddl_opts[:verbose] = true }
|
218
|
+
opt.on("--help", "-h", "This text.") { puts opt; exit }
|
219
|
+
opt.separator(opt.summary_indent + "start|stop|restart|info".ljust(opt.summary_width+1) + "Do operation start, stop, restart or get information.")
|
220
|
+
@riddl_opts[:runtime_options].each do |ro|
|
221
|
+
opt.separator(opt.summary_indent + ro[0].ljust(opt.summary_width+1) + ro[1])
|
222
|
+
end
|
223
|
+
opt.parse!
|
224
|
+
}
|
225
|
+
unless (%w{start stop restart info} + @riddl_opts[:runtime_options].map{|ro| ro[0] }).include?(ARGV[0])
|
226
|
+
puts ARGV.options
|
227
|
+
exit
|
228
|
+
end
|
229
|
+
@riddl_opts[:cmdl_operation] = ARGV[0]
|
230
|
+
end
|
231
|
+
########################################################################################################################
|
223
232
|
@riddl_opts[:url] = (@riddl_opts[:secure] ? 'https://' : 'http://') + @riddl_opts[:host] + ':' + @riddl_opts[:port].to_s
|
224
233
|
|
225
234
|
@riddl_logger = nil
|
226
|
-
@riddl_process_out = true
|
235
|
+
@riddl_process_out = true
|
227
236
|
@riddl_cross_site_xhr = false
|
228
237
|
@accessible_description = false
|
229
238
|
@riddl_description_string = ''
|
230
|
-
@riddl_paths = []
|
239
|
+
@riddl_paths = []
|
231
240
|
|
232
241
|
@riddl_at_exit = nil
|
233
242
|
|
@@ -270,18 +279,18 @@ module Riddl
|
|
270
279
|
else
|
271
280
|
@riddl_log.write "501: the #{@riddl_method} parameters are not matching anything in the description.\n"
|
272
281
|
@riddl_status = 501 # not implemented?!
|
273
|
-
end
|
282
|
+
end
|
274
283
|
else
|
275
284
|
if !@riddl_message.nil? && @accessible_description && @riddl_message.in.name == 'riddl-description-request' && @riddl_method == 'get' && '/' + @riddl_info[:s].join('/') == '/'
|
276
|
-
run Riddl::Utils::Description::RDR, @riddl_description_string
|
285
|
+
run Riddl::Utils::Description::RDR, @riddl_description_string
|
277
286
|
elsif !@riddl_message.nil? && @accessible_description && @riddl_message.in.name == 'riddl-resource-description-request' && @riddl_method == 'get'
|
278
287
|
@riddl_path = File.dirname('/' + @riddl_info[:s].join('/')).gsub(/\/+/,'/')
|
279
288
|
on resource File.basename('/' + @riddl_info[:s].join('/')).gsub(/\/+/,'/') do
|
280
289
|
run Riddl::Utils::Description::RDR, @riddl.resource_description(@riddl_matching_path[0])
|
281
|
-
end
|
290
|
+
end
|
282
291
|
else
|
283
292
|
if @riddl.description?
|
284
|
-
instance_exec(@riddl_info, &@riddl_interfaces[nil])
|
293
|
+
instance_exec(@riddl_info, &@riddl_interfaces[nil])
|
285
294
|
elsif @riddl.declaration?
|
286
295
|
mess = @riddl_message
|
287
296
|
@riddl_message.route_to_a.each do |m|
|
@@ -295,11 +304,11 @@ module Riddl
|
|
295
304
|
@riddl_info[:s] = m.interface.sub.sub(/\//,'').split('/')
|
296
305
|
@riddl_info.merge!(:match => matching_path)
|
297
306
|
instance_exec(@riddl_info, &@riddl_interfaces[m.interface.name])
|
298
|
-
else
|
307
|
+
else
|
299
308
|
@riddl_log.write "501: not implemented (for remote: add @location in declaration; for local: add to Riddl::Server).\n"
|
300
309
|
@riddl_status = 501 # not implemented?!
|
301
310
|
break
|
302
|
-
end
|
311
|
+
end
|
303
312
|
else
|
304
313
|
run Riddl::Utils::Description::Call, @riddl_exe, @riddl_pinfo, m.interface.top, m.interface.base, m.interface.real_path(@riddl_pinfo)
|
305
314
|
end
|
@@ -313,7 +322,7 @@ module Riddl
|
|
313
322
|
@riddl_res['Access-Control-Allow-Origin'] = '*'
|
314
323
|
@riddl_res['Access-Control-Max-Age'] = '0'
|
315
324
|
end
|
316
|
-
end
|
325
|
+
end
|
317
326
|
end #}}}
|
318
327
|
|
319
328
|
def __xmpp_call(env,raw) #{{{
|
@@ -343,12 +352,12 @@ module Riddl
|
|
343
352
|
).params
|
344
353
|
|
345
354
|
@riddl_path = '/'
|
346
|
-
@riddl_info = {
|
355
|
+
@riddl_info = {
|
347
356
|
:h => @riddl_headers,
|
348
357
|
:p => @riddl_parameters,
|
349
|
-
:r => @riddl_pinfo.sub(/\//,'').split('/').map{|e|Protocols::Utils::unescape(e)},
|
358
|
+
:r => @riddl_pinfo.sub(/\//,'').split('/').map{|e|Protocols::Utils::unescape(e)},
|
350
359
|
:s => @riddl_matching_path[0].sub(/\//,'').split('/'),
|
351
|
-
:m => @riddl_method,
|
360
|
+
:m => @riddl_method,
|
352
361
|
:env => Hash[@riddl_env.root.attributes.map{|a| [a.qname.name, a.value] }].merge({ 'riddl.transport' => 'xmpp', 'xmpp' => @riddl_res }),
|
353
362
|
:match => []
|
354
363
|
}
|
@@ -375,7 +384,7 @@ module Riddl
|
|
375
384
|
def __http_call(env) #{{{
|
376
385
|
@riddl_env = env
|
377
386
|
@riddl_env['rack.logger'] = @riddl_logger if @riddl_logger
|
378
|
-
@riddl_log = @riddl_logger || @riddl_env['rack.errors']
|
387
|
+
@riddl_log = @riddl_logger || @riddl_env['rack.errors']
|
379
388
|
@riddl_res = Rack::Response.new
|
380
389
|
@riddl_status = 404
|
381
390
|
|
@@ -402,12 +411,12 @@ module Riddl
|
|
402
411
|
|
403
412
|
@riddl_method = @riddl_env['REQUEST_METHOD'].downcase
|
404
413
|
@riddl_path = '/'
|
405
|
-
@riddl_info = {
|
414
|
+
@riddl_info = {
|
406
415
|
:h => @riddl_headers,
|
407
416
|
:p => @riddl_parameters,
|
408
|
-
:r => @riddl_pinfo.sub(/\//,'').split('/').map{|e|Protocols::Utils::unescape(e)},
|
417
|
+
:r => @riddl_pinfo.sub(/\//,'').split('/').map{|e|Protocols::Utils::unescape(e)},
|
409
418
|
:s => @riddl_matching_path[0].sub(/\//,'').split('/'),
|
410
|
-
:m => @riddl_method,
|
419
|
+
:m => @riddl_method,
|
411
420
|
:env => @riddl_env.reject{|k,v| k =~ /^rack\./}.merge({'riddl.transport' => 'http', 'xmpp' => @riddl_opts[:xmpp]}),
|
412
421
|
:match => []
|
413
422
|
}
|
@@ -430,12 +439,12 @@ module Riddl
|
|
430
439
|
@riddl_info.merge!(:match => matching_path)
|
431
440
|
instance_exec(@riddl_info, &@riddl_interfaces[@riddl_message.interface.name])
|
432
441
|
end
|
433
|
-
end
|
434
|
-
end
|
435
|
-
throw :async
|
442
|
+
end
|
443
|
+
end
|
444
|
+
throw :async
|
436
445
|
else
|
437
446
|
__call
|
438
|
-
end
|
447
|
+
end
|
439
448
|
else
|
440
449
|
@riddl_log.write "404: this resource for sure does not exist.\n"
|
441
450
|
@riddl_status = 404 # client requests wrong path
|
@@ -448,8 +457,8 @@ module Riddl
|
|
448
457
|
end
|
449
458
|
@riddl_res.status = @riddl_status
|
450
459
|
@riddl_res.finish
|
451
|
-
end #}}}
|
452
|
-
|
460
|
+
end #}}}
|
461
|
+
|
453
462
|
def process_out(pout)# {{{
|
454
463
|
@riddl_process_out = pout
|
455
464
|
end# }}}
|
@@ -475,7 +484,7 @@ module Riddl
|
|
475
484
|
if @riddl_paths.empty? # default interface, when a description and "on" syntax in server
|
476
485
|
@riddl_interfaces[nil] = block
|
477
486
|
return
|
478
|
-
end
|
487
|
+
end
|
479
488
|
|
480
489
|
@riddl_path << (@riddl_path == '/' ? resource : '/' + resource)
|
481
490
|
|
@@ -493,19 +502,19 @@ module Riddl
|
|
493
502
|
def run(what,*args)# {{{
|
494
503
|
return if @riddl_path == ''
|
495
504
|
if what.class == Class && what.superclass == Riddl::WebSocketImplementation
|
496
|
-
data = Riddl::Protocols::WebSocket::ParserData.new
|
497
|
-
data.request_path = @riddl_pinfo
|
505
|
+
data = Riddl::Protocols::WebSocket::ParserData.new
|
506
|
+
data.request_path = @riddl_pinfo
|
498
507
|
data.request_url = @riddl_pinfo + '?' + @riddl_query_string
|
499
508
|
data.query_string = @riddl_query_string
|
500
|
-
data.http_method = @riddl_env['REQUEST_METHOD']
|
501
|
-
data.body = @riddl_env['rack.input'].read
|
509
|
+
data.http_method = @riddl_env['REQUEST_METHOD']
|
510
|
+
data.body = @riddl_env['rack.input'].read
|
502
511
|
data.headers = Hash[
|
503
512
|
@riddl_headers.map { |key, value| [key.downcase.gsub('_','-'), value] }
|
504
513
|
]
|
505
514
|
w = what.new(@riddl_info.merge!(:a => args, :version => @riddl_env['HTTP_SEC_WEBSOCKET_VERSION'], :match => matching_path))
|
506
|
-
w.io = Riddl::Protocols::WebSocket.new(w, @riddl_env['thin.connection'])
|
507
|
-
w.io.dispatch(data)
|
508
|
-
end
|
515
|
+
w.io = Riddl::Protocols::WebSocket.new(w, @riddl_env['thin.connection'])
|
516
|
+
w.io.dispatch(data)
|
517
|
+
end
|
509
518
|
if what.class == Class && what.superclass == Riddl::Implementation
|
510
519
|
w = what.new(@riddl_info.merge!(:a => args, :match => matching_path))
|
511
520
|
@riddl_exe = Riddl::Server::Execution.new(w.response,w.headers)
|
@@ -515,7 +524,7 @@ module Riddl
|
|
515
524
|
@riddl_log.write "500: the return for the #{@riddl_method} is not matching anything in the description.\n"
|
516
525
|
@riddl_status = 500
|
517
526
|
return
|
518
|
-
end
|
527
|
+
end
|
519
528
|
end
|
520
529
|
end
|
521
530
|
end# }}}
|
@@ -524,7 +533,7 @@ module Riddl
|
|
524
533
|
if !@riddl_message.nil? && what.class == Hash && what.length == 1
|
525
534
|
met, min = what.first
|
526
535
|
@riddl_path == @riddl_matching_path[0] && min == @riddl_message.in.name && @riddl_method == met.to_s.downcase
|
527
|
-
else
|
536
|
+
else
|
528
537
|
false
|
529
538
|
end
|
530
539
|
end # }}}
|
@@ -536,7 +545,7 @@ module Riddl
|
|
536
545
|
def resource(rname=nil); return rname.nil? ? '{}' : rname end
|
537
546
|
|
538
547
|
def matching_path #{{{
|
539
|
-
@riddl_path.sub(/\//,'').split('/')
|
548
|
+
@riddl_path.sub(/\//,'').split('/')
|
540
549
|
end #}}}
|
541
550
|
|
542
551
|
def declaration_path #{{{
|
data/riddl.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riddl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.99.
|
4
|
+
version: 0.99.200
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen eTM Mangler
|
8
8
|
autorequire:
|
9
9
|
bindir: tools
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xml-smart
|
@@ -337,7 +337,8 @@ files:
|
|
337
337
|
- examples/library/rngs/list-of-books.rng
|
338
338
|
- examples/library/rngs/list-of-customers.rng
|
339
339
|
- examples/library/rngs/list-of-loans.rng
|
340
|
-
- examples/library/server
|
340
|
+
- examples/library/server-9292.pid
|
341
|
+
- examples/library/server.rb
|
341
342
|
- examples/library/static/info.txt
|
342
343
|
- examples/notifications/implementation/index.html
|
343
344
|
- examples/notifications/implementation/juergen.html
|