rack-rscript 1.1.7 → 1.2.1
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
- checksums.yaml.gz.sig +0 -0
- data/lib/rack-rscript.rb +186 -141
- data.tar.gz.sig +0 -0
- metadata +60 -79
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb8f81937a9057df995fed0866db887efb7d3b51821c94fd8981be81443fc0fb
|
4
|
+
data.tar.gz: 4145e73c58a2ae1de7e636b576e33a51ac08a021b631e54aef864bc8e1753352
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0775bf1401dc6bd0cb792065b9db9347254693e50934dd8ebe7c960692d4153935ebecb671d930994bb521fb2b194f76c2865c7dd498b0c7149fa283b9e9904
|
7
|
+
data.tar.gz: ca86b8dcc16acf51140b9e8ad375df2cb1949a35ef83ce871c62aa7b22dc5af6851f8e34c48956a0fda564c87f20f117751bad799ca64ca82889bcbb59faa25f
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/rack-rscript.rb
CHANGED
@@ -17,7 +17,7 @@ require 'polyrex-links'
|
|
17
17
|
|
18
18
|
class Redirect
|
19
19
|
attr_reader :to_url
|
20
|
-
|
20
|
+
|
21
21
|
def initialize(url)
|
22
22
|
@to_url = url
|
23
23
|
end
|
@@ -33,232 +33,295 @@ class RackRscript
|
|
33
33
|
include AppRoutes
|
34
34
|
include RXFHelperModule
|
35
35
|
using ColouredText
|
36
|
-
|
37
|
-
|
36
|
+
|
37
|
+
attr_reader :req, :rsc
|
38
|
+
|
39
|
+
|
40
|
+
def initialize(log: nil, pkg_src: '', cache: 5, rsc_host: nil,
|
41
|
+
rsc: {host: rsc_host, port: '61000'},
|
38
42
|
pxlinks: nil, debug: false, root: '', static: {})
|
39
43
|
|
40
44
|
@log, @debug, @static = log, debug, static
|
41
|
-
|
45
|
+
#=begin
|
42
46
|
puts '@app_root: ' + @app_root.inspect if @debug
|
43
47
|
puts 'root: ' + root.inspect if @debug
|
44
|
-
|
48
|
+
|
45
49
|
@params = {}
|
46
|
-
|
50
|
+
|
47
51
|
@templates = {}
|
48
|
-
|
52
|
+
|
49
53
|
@rscript = RScriptRW.new log: log, pkg_src: pkg_src, cache: cache, debug: true
|
50
|
-
|
54
|
+
@render = NThrut.new(self)
|
55
|
+
|
51
56
|
@url_base = pkg_src # web server serving the RSF files
|
52
|
-
@url_base += '/' unless @url_base[-1] == '/'
|
53
|
-
|
57
|
+
@url_base += '/' unless @url_base[-1] == '/'
|
58
|
+
|
54
59
|
if pxlinks then
|
55
|
-
|
60
|
+
|
56
61
|
src, _ = RXFHelper.read(pxlinks)
|
57
|
-
|
62
|
+
|
58
63
|
if src =~ /^<\?/ then
|
59
|
-
|
64
|
+
|
60
65
|
@pxlinks = PolyrexLinks.new src
|
61
|
-
|
66
|
+
|
62
67
|
else
|
63
|
-
|
68
|
+
|
64
69
|
@pxlinks = PolyrexLinks.new
|
65
70
|
@pxlinks.parse pxlinks
|
66
|
-
|
67
|
-
end
|
68
|
-
|
71
|
+
|
72
|
+
end
|
73
|
+
|
69
74
|
end
|
70
75
|
|
71
76
|
super() # required for app-routes initialize method to exectue
|
72
|
-
default_routes(@env, @params)
|
73
|
-
|
77
|
+
default_routes(@env, @params || {})
|
78
|
+
|
74
79
|
@rsc = nil
|
75
80
|
|
76
|
-
|
77
|
-
|
81
|
+
if rsc[:host] and rsc[:host].length > 0 then
|
82
|
+
@rsc = RSC.new(rsc[:host], port: rsc[:port])
|
83
|
+
end
|
84
|
+
|
78
85
|
@filetype = {xml: 'application/xml', html: 'text/html', png: 'image/png',
|
79
86
|
jpg: 'image/jpeg', txt: 'text/plain', css: 'text/css',
|
80
|
-
xsl: 'application/xml', svg: 'image/svg+xml'}
|
81
|
-
|
82
|
-
@root, @static = root, static
|
87
|
+
xsl: 'application/xml', svg: 'image/svg+xml'}
|
83
88
|
|
89
|
+
@root, @static = root, static
|
90
|
+
@initialized = {}
|
91
|
+
#=end
|
84
92
|
end
|
85
93
|
|
86
|
-
def call(env)
|
87
|
-
|
94
|
+
def call(env, testmode: false)
|
95
|
+
|
96
|
+
|
88
97
|
@env = env
|
89
|
-
raw_request = env['REQUEST_URI'][
|
98
|
+
raw_request = env['REQUEST_URI'][/\/\/[^\/]+(.*)/,1]
|
99
|
+
#raw_request = env['REQUEST_PATH']
|
90
100
|
|
91
101
|
@log.info 'RackRscript/call: ' + env.inspect if @log
|
92
|
-
@req = Rack::Request.new(env)
|
93
102
|
|
94
|
-
|
103
|
+
if testmode == false then
|
104
|
+
|
105
|
+
@req = Rack::Request.new(env)
|
106
|
+
@req_params = @req.params
|
107
|
+
|
108
|
+
end
|
109
|
+
|
95
110
|
default_routes(env,@params)
|
96
|
-
|
111
|
+
|
97
112
|
request = if @pxlinks then
|
98
113
|
found = @pxlinks.locate(raw_request)
|
99
114
|
found ? found.join : raw_request
|
100
115
|
else
|
101
116
|
raw_request
|
102
117
|
end
|
103
|
-
|
118
|
+
|
119
|
+
@log.info 'RackRscript/call/request: ' + request.inspect if @log
|
120
|
+
#=begin
|
121
|
+
puts 'request: ' + request.inspect if @debug
|
104
122
|
run_request(request)
|
123
|
+
#=end
|
124
|
+
# [200, {"Content-Type" => "text/plain"}, [env.inspect]]
|
105
125
|
end
|
106
126
|
|
107
127
|
def clear_cache()
|
108
128
|
@rscript.reset
|
109
129
|
end
|
110
130
|
|
111
|
-
def run_job(url,
|
131
|
+
def run_job(url, job, params={}, type=:get, *qargs)
|
132
|
+
|
133
|
+
puts 'inside run_job' if @debug
|
134
|
+
@log.debug 'RackRscript/run_job/params: ' + params.inspect if @log
|
135
|
+
@log.debug 'RackRscript/run_job/qargs: ' + qargs.inspect if @log
|
112
136
|
|
113
137
|
if @params[:splat] then
|
114
138
|
@params.each do |k,v|
|
115
139
|
@params.delete k unless k == :splat or k == :package \
|
116
140
|
or k == :job or k == :captures
|
117
141
|
end
|
118
|
-
end
|
119
|
-
|
142
|
+
end
|
143
|
+
|
120
144
|
if @params[:splat] and @params[:splat].length > 0 then
|
121
|
-
h = @params[:splat].first[1..-1].split('&').inject({}) do |r,x|
|
145
|
+
h = @params[:splat].first[1..-1].split('&').inject({}) do |r,x|
|
122
146
|
k, v = x.split('=')
|
123
147
|
v ? r.merge(k[/\w+$/].to_sym => Rack::Utils.unescape(v)) : r
|
124
148
|
end
|
125
149
|
@params.merge! h
|
126
150
|
end
|
127
|
-
|
128
|
-
@params.merge! @req.params
|
151
|
+
|
152
|
+
@params.merge! @req.params if @req
|
129
153
|
@rscript.type = type
|
130
|
-
|
154
|
+
|
155
|
+
if not @rscript.jobs(url).include?(job.to_sym) then
|
156
|
+
|
157
|
+
if @rscript.jobs(url).include?(:job_missing) then
|
158
|
+
job = 'job_missing'
|
159
|
+
else
|
160
|
+
[404, 'job not found']
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
result, args = @rscript.read([url, '//job:' + job, \
|
131
166
|
qargs].flatten)
|
132
167
|
|
133
168
|
rws = self
|
134
|
-
rsc = @rsc if @rsc
|
169
|
+
rsc = @rsc if @rsc
|
135
170
|
req = @req if @req
|
136
|
-
|
171
|
+
|
137
172
|
begin
|
173
|
+
|
174
|
+
if @debug then
|
175
|
+
puts @rscript.jobs(url).inspect
|
176
|
+
puts 'job: ' + job.inspect
|
177
|
+
puts 'url: ' + url.inspect
|
178
|
+
puts '@initialized: ' + @initialized.inspect
|
179
|
+
bflag = @rscript.jobs(url).include?(:initialize) and \
|
180
|
+
!@initialized[url] and job != 'initialize'
|
181
|
+
puts 'bflag: ' + bflag.inspect
|
182
|
+
end
|
183
|
+
|
184
|
+
if @rscript.jobs(url).include?(:initialize) and
|
185
|
+
!@initialized[url] and job != 'initialize' then
|
186
|
+
puts 'before run initialize' if @debug
|
187
|
+
r2 = @rscript.read([url, '//job:initialize'])
|
188
|
+
puts 'r2: ' + r2.inspect if @debug
|
189
|
+
eval r2.join
|
190
|
+
@initialized[url] = true
|
191
|
+
end
|
192
|
+
|
193
|
+
|
138
194
|
r = eval result
|
195
|
+
|
139
196
|
return r
|
140
197
|
|
141
|
-
rescue Exception => e
|
142
|
-
|
198
|
+
rescue Exception => e
|
199
|
+
|
143
200
|
@params = {}
|
144
|
-
err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
|
201
|
+
err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
|
145
202
|
raise RackRscriptError, err_label
|
146
203
|
|
147
204
|
@log.debug 'RackRscript/run_job/error: ' + err_label if @log
|
148
205
|
end
|
149
|
-
|
206
|
+
|
150
207
|
end
|
151
208
|
|
152
|
-
|
209
|
+
|
153
210
|
def redirect(url)
|
154
211
|
Redirect.new url
|
155
212
|
end
|
156
|
-
|
213
|
+
|
157
214
|
# jr 140616 not yet used and still needs to be tested
|
158
215
|
def transform(xsl, xml)
|
159
216
|
Rexslt.new(xsl, xml).to_s
|
160
217
|
end
|
161
218
|
|
162
|
-
def haml(name,options={})
|
163
|
-
render name,
|
164
|
-
end
|
165
|
-
|
219
|
+
def haml(name,options={})
|
220
|
+
@render.haml name, options
|
221
|
+
end
|
222
|
+
|
166
223
|
def slim(name,options={})
|
167
|
-
render name,
|
168
|
-
end
|
169
|
-
|
224
|
+
@render.slim name, options
|
225
|
+
end
|
226
|
+
|
170
227
|
protected
|
171
228
|
|
172
229
|
def default_routes(env, params)
|
173
230
|
|
231
|
+
@log.info 'RackRscript/default_routes: ' + params.inspect if @log
|
174
232
|
|
175
233
|
get '/do/:package/:job' do |package,job|
|
176
|
-
|
177
|
-
|
234
|
+
@log.info 'RackRscript/route/do/package/job: ' + [package, job].inspect if @log
|
235
|
+
run_job("%s%s.rsf" % [@url_base, package], job, params)
|
236
|
+
end
|
178
237
|
|
179
|
-
get /\/(.*)\/do\/(\w+)\/(\w+)
|
180
|
-
run_job(("%s%s/%s.rsf" % [@url_base, d, package]),
|
181
|
-
|
182
|
-
|
238
|
+
get /\/(.*)\/do\/(\w+)\/(\w+)$/ do |d, package,job|
|
239
|
+
run_job(("%s%s/%s.rsf" % [@url_base, d, package]), job, params)
|
240
|
+
end
|
241
|
+
|
242
|
+
get /\/(.*)\/do\/(\w+)\/(\w+)\/(.*)/ do |d, package, job, raw_args|
|
243
|
+
args = raw_args.split('/')
|
244
|
+
run_job(("%s%s/%s.rsf" % [@url_base, d, package]), job, params, :get, args)
|
245
|
+
end
|
183
246
|
|
184
247
|
post '/do/:package/:job' do |package,job|
|
185
|
-
run_job("%s%s.rsf" % [@url_base, package],
|
248
|
+
run_job("%s%s.rsf" % [@url_base, package], job, params, :post)
|
186
249
|
end
|
187
|
-
|
250
|
+
|
188
251
|
get '/do/:package/:job/*' do |package, job|
|
189
252
|
raw_args = params[:splat]
|
190
253
|
args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
|
191
|
-
run_job("%s%s.rsf" % [@url_base, package],
|
254
|
+
run_job("%s%s.rsf" % [@url_base, package], job, params, :get, args)
|
192
255
|
end
|
193
256
|
|
194
257
|
post '/do/:package/:job/*' do |package, job|
|
195
258
|
raw_args = params[:splat]
|
196
259
|
args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
|
197
|
-
run_job("%s%s.rsf" % [@url_base, package],
|
260
|
+
run_job("%s%s.rsf" % [@url_base, package], job, params, :post, args)
|
198
261
|
end
|
199
262
|
|
200
263
|
get '/source/:package/:job' do |package,job|
|
201
264
|
url = "%s%s.rsf" % [@url_base, package]
|
202
|
-
[@rscript.read([url,
|
203
|
-
end
|
265
|
+
[@rscript.read([url, job]).first, 'text/plain']
|
266
|
+
end
|
204
267
|
|
205
268
|
get '/source/:package' do |package,job|
|
206
|
-
|
269
|
+
|
207
270
|
url = "%s%s.rsf" % [@url_base, package]
|
208
271
|
|
209
272
|
begin
|
210
|
-
|
273
|
+
|
211
274
|
[RXFHelper.read(url).first,'text/plain']
|
212
275
|
|
213
276
|
rescue
|
214
|
-
|
277
|
+
|
215
278
|
['url: ' + url + '; ' + ($!).inspect + \
|
216
279
|
'couldn\'t find that package', 'text/plain']
|
217
280
|
end
|
218
281
|
|
219
|
-
end
|
282
|
+
end
|
220
283
|
|
221
284
|
get '/ls' do
|
222
|
-
|
285
|
+
|
223
286
|
FileX.exists? @url_base
|
224
287
|
filepath = @url_base
|
225
|
-
|
288
|
+
|
226
289
|
[Dir.glob(filepath + '/*.rsf').map{|x| x[/([^\/]+)\.rsf$/,1]}.to_json,\
|
227
290
|
'application/json']
|
228
291
|
|
229
|
-
end
|
230
|
-
|
292
|
+
end
|
293
|
+
|
231
294
|
if @static.any? then
|
232
|
-
|
295
|
+
|
233
296
|
get /^(\/(?:#{@static.keys.join('|')}).*)/ do |raw_path|
|
234
297
|
|
235
298
|
_, file, tailpath = raw_path.split('/',3)
|
236
|
-
|
299
|
+
|
237
300
|
filepath = if @static[file].empty? then
|
238
|
-
|
301
|
+
|
239
302
|
path = raw_path
|
240
303
|
puts 'path: ' + path.inspect if @debug
|
241
|
-
filepath = File.join(@app_root, @root, path )
|
242
|
-
|
304
|
+
filepath = File.join(@app_root, @root, path )
|
305
|
+
|
243
306
|
else
|
244
|
-
|
245
|
-
File.join(@static[file], tailpath)
|
246
|
-
|
307
|
+
|
308
|
+
File.join(@static[file], tailpath)
|
309
|
+
|
247
310
|
end
|
248
311
|
|
249
|
-
@log.debug 'RackRscript/default_routes/filepath: ' + filepath.inspect if @log
|
312
|
+
@log.debug 'RackRscript/default_routes/filepath: ' + filepath.inspect if @log
|
250
313
|
|
251
314
|
|
252
315
|
if @log then
|
253
|
-
@log.info 'DandelionS1/default_routes: ' +
|
316
|
+
@log.info 'DandelionS1/default_routes: ' +
|
254
317
|
"root: %s path: %s" % [@root, path]
|
255
318
|
end
|
256
319
|
|
257
320
|
if filepath.length < 1 or filepath[-1] == '/' then
|
258
|
-
filepath += 'index.html'
|
321
|
+
filepath += 'index.html'
|
259
322
|
FileX.read filepath
|
260
323
|
elsif FileX.directory? filepath then
|
261
|
-
Redirect.new (filepath + '/')
|
324
|
+
Redirect.new (filepath + '/')
|
262
325
|
elsif FileX.exists? filepath then
|
263
326
|
|
264
327
|
content_type = @filetype[filepath[/\w+$/].to_sym]
|
@@ -278,25 +341,39 @@ class RackRscript
|
|
278
341
|
else
|
279
342
|
Time.now.inspect
|
280
343
|
end
|
281
|
-
|
344
|
+
|
345
|
+
end
|
346
|
+
|
347
|
+
# file exists?
|
348
|
+
a = Dir.glob( File.join(@root.to_s, '*')).select do |x|
|
349
|
+
File::ftype(x) == 'directory'
|
350
|
+
end
|
351
|
+
|
352
|
+
get /^\/#{a.join('|')}/ do
|
353
|
+
|
354
|
+
'found' + a.inspect
|
355
|
+
|
282
356
|
end
|
283
357
|
|
284
358
|
end
|
285
|
-
|
359
|
+
|
286
360
|
def run_request(request)
|
287
|
-
|
361
|
+
|
288
362
|
#@log.debug 'inside run_request: ' + request.inspect if @log
|
289
363
|
#@log.debug 'inside run_request @env: ' + @env.inspect if @log
|
290
364
|
method_type = @env ? @env['REQUEST_METHOD'] : 'GET'
|
291
|
-
content, content_type, status_code = run_route(request, method_type)
|
365
|
+
content, content_type, status_code = run_route(request, method_type)
|
366
|
+
@log.info 'RackRscript/run_request/content: ' + content.inspect if @log
|
367
|
+
#puts 'content: ' + content.inspect if @debug
|
368
|
+
|
292
369
|
#@log.debug 'inside run_request' if @log
|
293
370
|
if content.is_a? Redirect then
|
294
|
-
|
371
|
+
|
295
372
|
redirectx = content
|
296
373
|
res = Rack::Response.new
|
297
374
|
res.redirect(redirectx.to_url)
|
298
|
-
res.finish
|
299
|
-
|
375
|
+
res.finish
|
376
|
+
|
300
377
|
else
|
301
378
|
|
302
379
|
e = $!
|
@@ -305,18 +382,18 @@ class RackRscript
|
|
305
382
|
content, status_code = e, 500
|
306
383
|
@log.debug 'RackRscript/call/error: ' + e if @log
|
307
384
|
elsif content.nil? then
|
308
|
-
content, status_code = "404: page not found", 404
|
309
|
-
end
|
385
|
+
content, status_code = "404: page not found", 404
|
386
|
+
end
|
310
387
|
|
311
|
-
tilt_proc = lambda do |s, content_type|
|
388
|
+
tilt_proc = lambda do |s, content_type|
|
312
389
|
type = content_type[/[^\/]+$/]
|
313
390
|
s = [s,{}] unless s.is_a? Array
|
314
391
|
content, options = s
|
315
392
|
[Tilt[type].new() {|x| content}.render(self, options), 'text/html']
|
316
393
|
end
|
317
|
-
|
394
|
+
|
318
395
|
passthru_proc = lambda{|c, ct| [c,ct]}
|
319
|
-
|
396
|
+
|
320
397
|
ct_list = {
|
321
398
|
'text/html' => passthru_proc,
|
322
399
|
'text/haml' => tilt_proc,
|
@@ -330,58 +407,26 @@ class RackRscript
|
|
330
407
|
'application/json' => passthru_proc,
|
331
408
|
'image/png' => passthru_proc,
|
332
409
|
'image/jpeg' => passthru_proc,
|
333
|
-
'image/svg+xml' => passthru_proc
|
410
|
+
'image/svg+xml' => passthru_proc
|
334
411
|
}
|
335
|
-
|
412
|
+
|
336
413
|
content_type ||= 'text/html'
|
337
|
-
status_code ||= 200
|
414
|
+
status_code ||= 200
|
338
415
|
proc = ct_list[content_type]
|
339
416
|
proc ||= passthru_proc
|
340
|
-
content, content_type = proc.call(content, content_type)
|
341
|
-
|
417
|
+
content, content_type = proc.call(content, content_type)
|
418
|
+
|
342
419
|
[status_code, {"Content-Type" => content_type}, [content]]
|
343
|
-
end
|
344
|
-
|
420
|
+
end
|
421
|
+
|
345
422
|
end
|
346
|
-
|
423
|
+
|
347
424
|
alias jumpto run_request
|
348
425
|
|
349
426
|
private
|
350
427
|
|
351
|
-
def render(name, type, opt={})
|
352
|
-
|
353
|
-
options = {locals: {}}.merge!(opt)
|
354
|
-
locals = options.delete :locals
|
355
|
-
|
356
|
-
unless @templates[:layout] then
|
357
|
-
template(:layout, type) { File.read('views/layout.' + type.to_s) }
|
358
|
-
end
|
359
|
-
|
360
|
-
layout = Tilt[type.to_s].new(options) {|x| @templates[:layout][:content]}
|
361
|
-
|
362
|
-
unless @templates[name] then
|
363
|
-
template(name, type) { File.read("views/%s.%s" % [name.to_s, type.to_s])}
|
364
|
-
end
|
365
|
-
|
366
|
-
template = Tilt[type.to_s].new(options) {|x| @templates[name][:content]}
|
367
|
-
layout.render{ template.render(self, locals)}
|
368
|
-
end
|
369
|
-
|
370
428
|
def template(name, type=nil, &blk)
|
371
|
-
@
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
def tilt(name, options={})
|
376
|
-
|
377
|
-
options = {locals: {}}.merge!(opt)
|
378
|
-
locals = options.delete :locals
|
379
|
-
layout = Tilt[@templates[:layout][:type].to_s].new(options)\
|
380
|
-
{|x| @templates[:layout][:content]}
|
381
|
-
template = Tilt[@templates[name][:type].to_s].new(options) \
|
382
|
-
{|x| @templates[name][:content]}
|
383
|
-
layout.render{ template.render(self, locals)}
|
384
|
-
|
385
|
-
end
|
386
|
-
|
429
|
+
@render.template name, type, &blk
|
430
|
+
end
|
431
|
+
|
387
432
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-rscript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,31 +11,31 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMjI5MTgxNDQyWhcN
|
15
|
+
MjIxMjI5MTgxNDQyWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC86yKR
|
17
|
+
KdjeR2YaKGfHPYSq+dF7O6QO+iCllVNfuVLgdZ46E35mBPMRNiXkwu3nnzEcdKnp
|
18
|
+
gN23mnWcl/riMqR6I+aymlqzFuqOeeOEl/A4T/fCcuhGx7DZmOEKJx0a58L/o3/K
|
19
|
+
X8LriVIA2fqKXpXlwcsbH9LuHHCGCXzDrw2sfJOevCkPZmGC+4YmY/Ma77gBiJL3
|
20
|
+
1NAvfEAY2/Mm3SnKC/QR26cWo4ZT6cVqCvd6NcjnRbe2/4MkV+QRzG9bjR/jXv/p
|
21
|
+
d5IimipfEw3rvqzCZqSmqC7ZPXAJhCm3VfwrVr6AaUkOiov0elBBDEU7tN4rpLAd
|
22
|
+
AP/FQSDjA3+ElDiDQFfTgqqepIcoGZqsm+ct/MuHMVQzaBCHs/LQXTNIJDsv5oOq
|
23
|
+
YswOTDTE4j//Du1ySuCyboVDDQjeMNj7Xzr6gmQaelHrcC/Ax18fFVMMQS3CykUP
|
24
|
+
FPPwXgaqhMvO6IigDhif6bxOr9GWkR3wAOAZcdPTJuI69kXsDIppd8wvwBcCAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUedc2Phvh
|
26
|
+
fegWTvjwW6u98RQNLiEwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
/
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAT8rbqnsRYicLTmcGmLHEvSAn/KEdyqbSSuuD0Kfr
|
29
|
+
SCVHCqTl53smpdKgBboZH9ZVr946vYtCZ/rtd1pVpEo/ENcWcaNaV4NhK6n/njCX
|
30
|
+
UBZ9Pdy0obZwP8k+nykQdQqDYUqiW/BXo1SB/BdkPOVu5mRYmx7yHuuj2vZpMmxM
|
31
|
+
lv4IN0rEyJXBtkcLQbGdQcRT9/b1/FLPAsuxEX7mFdSQrFufNLGcGzWl/c51a5Xo
|
32
|
+
SI76WH1OLRawRbeI9RS81zY/+Ku4K/plSqzynwuB52HFY4gEHtWlDMjJLdA98Pr8
|
33
|
+
z+AnDPyf+tgyo6PzzxVnEsp0GLrP1zKa4+NKXGXnbtDtPn7zQL3NamT39nPFzHfp
|
34
|
+
7wFc43V/b0NugGvugJlSjM4y4rHww2j0aKMTJDGGJK0e51BLG1Hs3c/SckeGIk3r
|
35
|
+
uQ8ts8x2DfuJYY/PmLbqwXkzMzb1EgnUBWZ3mZCdlL0UBst5ypPAFTn1b2qRUC92
|
36
|
+
UtKkOrrEmCXrBnFtpv6a1ULk
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2021-12-29 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rack
|
@@ -43,20 +43,20 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '2.
|
46
|
+
version: '2.2'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 2.
|
49
|
+
version: 2.2.3
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '2.
|
56
|
+
version: '2.2'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 2.
|
59
|
+
version: 2.2.3
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: app-routes
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,22 +81,22 @@ dependencies:
|
|
81
81
|
name: rscript
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
|
-
- - "~>"
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: '0.7'
|
87
84
|
- - ">="
|
88
85
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
86
|
+
version: 0.8.0
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.8'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0.7'
|
97
94
|
- - ">="
|
98
95
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.
|
96
|
+
version: 0.8.0
|
97
|
+
- - "~>"
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0.8'
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: tilt
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
version: '2.0'
|
107
107
|
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: 2.0.
|
109
|
+
version: 2.0.10
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -116,69 +116,69 @@ dependencies:
|
|
116
116
|
version: '2.0'
|
117
117
|
- - ">="
|
118
118
|
- !ruby/object:Gem::Version
|
119
|
-
version: 2.0.
|
119
|
+
version: 2.0.10
|
120
120
|
- !ruby/object:Gem::Dependency
|
121
121
|
name: slim
|
122
122
|
requirement: !ruby/object:Gem::Requirement
|
123
123
|
requirements:
|
124
|
-
- - "~>"
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
version: '4.0'
|
127
124
|
- - ">="
|
128
125
|
- !ruby/object:Gem::Version
|
129
|
-
version: 4.0
|
126
|
+
version: 4.1.0
|
127
|
+
- - "~>"
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '4.1'
|
130
130
|
type: :runtime
|
131
131
|
prerelease: false
|
132
132
|
version_requirements: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- - "~>"
|
135
|
-
- !ruby/object:Gem::Version
|
136
|
-
version: '4.0'
|
137
134
|
- - ">="
|
138
135
|
- !ruby/object:Gem::Version
|
139
|
-
version: 4.0
|
136
|
+
version: 4.1.0
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '4.1'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
name:
|
141
|
+
name: rexslt
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
146
|
+
version: 0.7.0
|
147
147
|
- - "~>"
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version: '
|
149
|
+
version: '0.7'
|
150
150
|
type: :runtime
|
151
151
|
prerelease: false
|
152
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
153
|
requirements:
|
154
154
|
- - ">="
|
155
155
|
- !ruby/object:Gem::Version
|
156
|
-
version:
|
156
|
+
version: 0.7.0
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
159
|
+
version: '0.7'
|
160
160
|
- !ruby/object:Gem::Dependency
|
161
|
-
name:
|
161
|
+
name: rsc
|
162
162
|
requirement: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: '0.
|
166
|
+
version: '0.4'
|
167
167
|
- - ">="
|
168
168
|
- !ruby/object:Gem::Version
|
169
|
-
version: 0.
|
169
|
+
version: 0.4.5
|
170
170
|
type: :runtime
|
171
171
|
prerelease: false
|
172
172
|
version_requirements: !ruby/object:Gem::Requirement
|
173
173
|
requirements:
|
174
174
|
- - "~>"
|
175
175
|
- !ruby/object:Gem::Version
|
176
|
-
version: '0.
|
176
|
+
version: '0.4'
|
177
177
|
- - ">="
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: 0.
|
179
|
+
version: 0.4.5
|
180
180
|
- !ruby/object:Gem::Dependency
|
181
|
-
name:
|
181
|
+
name: polyrex-links
|
182
182
|
requirement: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
@@ -197,28 +197,8 @@ dependencies:
|
|
197
197
|
- - ">="
|
198
198
|
- !ruby/object:Gem::Version
|
199
199
|
version: 0.4.3
|
200
|
-
- !ruby/object:Gem::Dependency
|
201
|
-
name: polyrex-links
|
202
|
-
requirement: !ruby/object:Gem::Requirement
|
203
|
-
requirements:
|
204
|
-
- - ">="
|
205
|
-
- !ruby/object:Gem::Version
|
206
|
-
version: 0.3.0
|
207
|
-
- - "~>"
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version: '0.3'
|
210
|
-
type: :runtime
|
211
|
-
prerelease: false
|
212
|
-
version_requirements: !ruby/object:Gem::Requirement
|
213
|
-
requirements:
|
214
|
-
- - ">="
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
version: 0.3.0
|
217
|
-
- - "~>"
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version: '0.3'
|
220
200
|
description:
|
221
|
-
email:
|
201
|
+
email: digital.robertson@gmail.com
|
222
202
|
executables: []
|
223
203
|
extensions: []
|
224
204
|
extra_rdoc_files: []
|
@@ -243,7 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
243
223
|
- !ruby/object:Gem::Version
|
244
224
|
version: '0'
|
245
225
|
requirements: []
|
246
|
-
|
226
|
+
rubyforge_project:
|
227
|
+
rubygems_version: 2.7.10
|
247
228
|
signing_key:
|
248
229
|
specification_version: 4
|
249
230
|
summary: Rack-Rscript is a light-weight alternative to Sinatra-Rscript.
|
metadata.gz.sig
CHANGED
Binary file
|