rack-rscript 1.1.8 → 1.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a89919a5c0bc41ed1f8e836aa0476baae386a1b5f4a1dd34fd69b2328584a5b
4
- data.tar.gz: bbbbdfaff50bfa3ddc1635f5cdc7d823077105e36357ea4cf78cade5a9d20084
3
+ metadata.gz: 4cc6d60f509c07b94de63018f88797d0dd775f10fe9226fb158dc3c09c5d4638
4
+ data.tar.gz: 1f39470e360019d57bc7c9cc85f07b55dc35fd4df4b3512ac2fda7ab838d385d
5
5
  SHA512:
6
- metadata.gz: de01da7bd5651a20115cce9f2309018f789bf9bf8754f94b080474bf2722ac7b30fdbf04c9e78e4be54addfa81356f9c3bd7e3b3137a538f3b12d9aeabc12258
7
- data.tar.gz: 6d36a96685f10f3518171a0f5f1bc37e2fe42d2c622e0258877a61c8a1042890e7d92a6ca3f2ac5104f5c6a7c86693d1df729b757851f8db3ccb7ee3386c12b7
6
+ metadata.gz: b233ab991b9dfea67758660aea524a29342ca1b848d623b75bc6326d039bc93e4e7e2e07e02db6dac64149c55c539293b439f57e312d5001e063e03f27f2b992
7
+ data.tar.gz: 250e3ab7377d31bd912886a267d099d33dcdd5011c18ffc1f845d589ad205d55b478590b63189e652245d82f533ed687b79a453e447a85d50fd6ce30b9d743b8
checksums.yaml.gz.sig CHANGED
@@ -1 +1,3 @@
1
- n�)�-* 1��q��n �B�r�������=�Q��X�^��㊋>%���=X&Xt��aX�:~� 2t��f $�; ���@��N��M��2 �U����̶x��vHp���`���مw�����x��3eZ��$��� M�3�i�OӼ�6�N����6r\]�3!��A����4c��տ)������9�Su�%][���2I1�=�/Q�h�y����'�]$yX}�s 8�r�C���8+L�j|��R �L�9��z��b�et{`\&zm����%@���io�m�Ho����X8��E�V;�i�1����[d�h�gZ�V'�����R��ְ��\-�(_�1dg>fvB��c���,����s`G��8٥~��֥��R
1
+ �����(�ފ4���g�
2
+ �I?$]׳��7Ĥ���z�<JBT����w���Q��6�e%�̈́/��Gt�}�[
3
+ ��~�����q^��5�ZC�Q�B��F���",hz|If�_��j�Q
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,60 +33,65 @@ class RackRscript
33
33
  include AppRoutes
34
34
  include RXFHelperModule
35
35
  using ColouredText
36
-
37
-
38
- def initialize(log: nil, pkg_src: '', cache: 5, rsc_host: nil,
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'},
39
42
  pxlinks: nil, debug: false, root: '', static: {})
40
43
 
41
44
  @log, @debug, @static = log, debug, static
42
- #=begin
45
+ #=begin
43
46
  puts '@app_root: ' + @app_root.inspect if @debug
44
47
  puts 'root: ' + root.inspect if @debug
45
-
48
+
46
49
  @params = {}
47
-
50
+
48
51
  @templates = {}
49
-
52
+
50
53
  @rscript = RScriptRW.new log: log, pkg_src: pkg_src, cache: cache, debug: true
51
54
  @render = NThrut.new(self)
52
-
55
+
53
56
  @url_base = pkg_src # web server serving the RSF files
54
- @url_base += '/' unless @url_base[-1] == '/'
55
-
57
+ @url_base += '/' unless @url_base[-1] == '/'
58
+
56
59
  if pxlinks then
57
-
60
+
58
61
  src, _ = RXFHelper.read(pxlinks)
59
-
62
+
60
63
  if src =~ /^<\?/ then
61
-
64
+
62
65
  @pxlinks = PolyrexLinks.new src
63
-
66
+
64
67
  else
65
-
68
+
66
69
  @pxlinks = PolyrexLinks.new
67
70
  @pxlinks.parse pxlinks
68
-
69
- end
70
-
71
+
72
+ end
73
+
71
74
  end
72
75
 
73
76
  super() # required for app-routes initialize method to exectue
74
- default_routes(@env, @params)
75
-
77
+ default_routes(@env, @params || {})
78
+
76
79
  @rsc = nil
77
80
 
78
- @rsc = RSC.new rsc_host if rsc_host and rsc_host.length > 0
79
-
81
+ if rsc[:host] and rsc[:host].length > 0 then
82
+ @rsc = RSC.new(rsc[:host], port: rsc[:port])
83
+ end
84
+
80
85
  @filetype = {xml: 'application/xml', html: 'text/html', png: 'image/png',
81
86
  jpg: 'image/jpeg', txt: 'text/plain', css: 'text/css',
82
- xsl: 'application/xml', svg: 'image/svg+xml'}
83
-
87
+ xsl: 'application/xml', svg: 'image/svg+xml'}
88
+
84
89
  @root, @static = root, static
85
90
  @initialized = {}
86
91
  #=end
87
92
  end
88
93
 
89
- def call(env)
94
+ def call(env, testmode: false)
90
95
 
91
96
 
92
97
  @env = env
@@ -94,22 +99,28 @@ class RackRscript
94
99
  #raw_request = env['REQUEST_PATH']
95
100
 
96
101
  @log.info 'RackRscript/call: ' + env.inspect if @log
97
- @req = Rack::Request.new(env)
98
102
 
99
- @req_params = @req.params
103
+ if testmode == false then
104
+
105
+ @req = Rack::Request.new(env)
106
+ @req_params = @req.params
107
+
108
+ end
109
+
100
110
  default_routes(env,@params)
101
-
111
+
102
112
  request = if @pxlinks then
103
113
  found = @pxlinks.locate(raw_request)
104
114
  found ? found.join : raw_request
105
115
  else
106
116
  raw_request
107
117
  end
108
-
118
+
109
119
  @log.info 'RackRscript/call/request: ' + request.inspect if @log
110
- #=begin
120
+ #=begin
121
+ puts 'request: ' + request.inspect if @debug
111
122
  run_request(request)
112
- #=end
123
+ #=end
113
124
  # [200, {"Content-Type" => "text/plain"}, [env.inspect]]
114
125
  end
115
126
 
@@ -117,169 +128,201 @@ class RackRscript
117
128
  @rscript.reset
118
129
  end
119
130
 
120
- def run_job(url, jobs, params={}, type=:get, *qargs)
131
+ def run_job(url, job, params={}, type=:get, *qargs)
121
132
 
133
+ puts 'inside run_job' if @debug
122
134
  @log.debug 'RackRscript/run_job/params: ' + params.inspect if @log
123
135
  @log.debug 'RackRscript/run_job/qargs: ' + qargs.inspect if @log
124
-
136
+
125
137
  if @params[:splat] then
126
138
  @params.each do |k,v|
127
139
  @params.delete k unless k == :splat or k == :package \
128
140
  or k == :job or k == :captures
129
141
  end
130
- end
131
-
142
+ end
143
+
132
144
  if @params[:splat] and @params[:splat].length > 0 then
133
- h = @params[:splat].first[1..-1].split('&').inject({}) do |r,x|
145
+ h = @params[:splat].first[1..-1].split('&').inject({}) do |r,x|
134
146
  k, v = x.split('=')
135
147
  v ? r.merge(k[/\w+$/].to_sym => Rack::Utils.unescape(v)) : r
136
148
  end
137
149
  @params.merge! h
138
150
  end
139
-
140
- @params.merge! @req.params
151
+
152
+ @params.merge! @req.params if @req
141
153
  @rscript.type = type
142
- result, args = @rscript.read([url, jobs.split(/\s/), \
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, \
143
166
  qargs].flatten)
144
167
 
145
168
  rws = self
146
- rsc = @rsc if @rsc
169
+ rsc = @rsc if @rsc
147
170
  req = @req if @req
148
-
171
+
149
172
  begin
150
-
151
- if @rscript.jobs(url).include? :initialize and
152
- !@initialized[url] and jobs != 'initialize' then
153
- @rscript.run([url, '//job:initialize'])
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
154
190
  @initialized[url] = true
155
191
  end
156
-
192
+
193
+
157
194
  r = eval result
195
+
158
196
  return r
159
197
 
160
- rescue Exception => e
161
-
198
+ rescue Exception => e
199
+
162
200
  @params = {}
163
- err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
201
+ err_label = e.message.to_s + " :: \n" + e.backtrace.join("\n")
164
202
  raise RackRscriptError, err_label
165
203
 
166
204
  @log.debug 'RackRscript/run_job/error: ' + err_label if @log
167
205
  end
168
-
206
+
169
207
  end
170
208
 
171
-
209
+
172
210
  def redirect(url)
173
211
  Redirect.new url
174
212
  end
175
-
213
+
176
214
  # jr 140616 not yet used and still needs to be tested
177
215
  def transform(xsl, xml)
178
216
  Rexslt.new(xsl, xml).to_s
179
217
  end
180
218
 
181
- def haml(name,options={})
219
+ def haml(name,options={})
182
220
  @render.haml name, options
183
- end
184
-
221
+ end
222
+
185
223
  def slim(name,options={})
186
224
  @render.slim name, options
187
- end
188
-
225
+ end
226
+
189
227
  protected
190
228
 
191
229
  def default_routes(env, params)
192
230
 
193
231
  @log.info 'RackRscript/default_routes: ' + params.inspect if @log
194
-
232
+
195
233
  get '/do/:package/:job' do |package,job|
196
234
  @log.info 'RackRscript/route/do/package/job: ' + [package, job].inspect if @log
197
- run_job("%s%s.rsf" % [@url_base, package], "//job:" + job, params)
198
- end
235
+ run_job("%s%s.rsf" % [@url_base, package], job, params)
236
+ end
199
237
 
200
- get /\/(.*)\/do\/(\w+)\/(\w+)/ do |d, package,job|
201
- run_job(("%s%s/%s.rsf" % [@url_base, d, package]),
202
- "//job:" + job, params)
203
- end
238
+ get '/:dir/do/:package/:job' do |dir, package, job|
239
+ run_job(("%s%s/%s.rsf" % [@url_base, dir, package]), job, params)
240
+ end
241
+
242
+ get '/:dir/do/:package/:job/*' do |dir, package, job|
243
+ raw_args = params[:splat]
244
+ args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
245
+ run_job(("%s%s/%s.rsf" % [@url_base, dir, package]), job, params, :get, args)
246
+ end
204
247
 
205
248
  post '/do/:package/:job' do |package,job|
206
- run_job("%s%s.rsf" % [@url_base, package], "//job:" + job, params, :post)
249
+ run_job("%s%s.rsf" % [@url_base, package], job, params, :post)
207
250
  end
208
-
251
+
209
252
  get '/do/:package/:job/*' do |package, job|
210
253
  raw_args = params[:splat]
211
254
  args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
212
- run_job("%s%s.rsf" % [@url_base, package], "//job:" + job, params, :get, args)
255
+ run_job("%s%s.rsf" % [@url_base, package], job, params, :get, args)
213
256
  end
214
257
 
215
258
  post '/do/:package/:job/*' do |package, job|
216
259
  raw_args = params[:splat]
217
260
  args = raw_args.first[/[^\s\?]+/].to_s.split('/')[1..-1]
218
- run_job("%s%s.rsf" % [@url_base, package], "//job:" + job, params, :post, args)
261
+ run_job("%s%s.rsf" % [@url_base, package], job, params, :post, args)
219
262
  end
220
263
 
221
264
  get '/source/:package/:job' do |package,job|
222
265
  url = "%s%s.rsf" % [@url_base, package]
223
- [@rscript.read([url, '//job:' + job]).first, 'text/plain']
224
- end
266
+ [@rscript.read([url, job]).first, 'text/plain']
267
+ end
225
268
 
226
269
  get '/source/:package' do |package,job|
227
-
270
+
228
271
  url = "%s%s.rsf" % [@url_base, package]
229
272
 
230
273
  begin
231
-
274
+
232
275
  [RXFHelper.read(url).first,'text/plain']
233
276
 
234
277
  rescue
235
-
278
+
236
279
  ['url: ' + url + '; ' + ($!).inspect + \
237
280
  'couldn\'t find that package', 'text/plain']
238
281
  end
239
282
 
240
- end
283
+ end
241
284
 
242
285
  get '/ls' do
243
-
286
+
244
287
  FileX.exists? @url_base
245
288
  filepath = @url_base
246
-
289
+
247
290
  [Dir.glob(filepath + '/*.rsf').map{|x| x[/([^\/]+)\.rsf$/,1]}.to_json,\
248
291
  'application/json']
249
292
 
250
- end
251
-
293
+ end
294
+
252
295
  if @static.any? then
253
-
296
+
254
297
  get /^(\/(?:#{@static.keys.join('|')}).*)/ do |raw_path|
255
298
 
256
299
  _, file, tailpath = raw_path.split('/',3)
257
-
300
+
258
301
  filepath = if @static[file].empty? then
259
-
302
+
260
303
  path = raw_path
261
304
  puts 'path: ' + path.inspect if @debug
262
- filepath = File.join(@app_root, @root, path )
263
-
305
+ filepath = File.join(@app_root, @root, path )
306
+
264
307
  else
265
-
266
- File.join(@static[file], tailpath)
267
-
308
+
309
+ File.join(@static[file], tailpath)
310
+
268
311
  end
269
312
 
270
- @log.debug 'RackRscript/default_routes/filepath: ' + filepath.inspect if @log
313
+ @log.debug 'RackRscript/default_routes/filepath: ' + filepath.inspect if @log
271
314
 
272
315
 
273
316
  if @log then
274
- @log.info 'DandelionS1/default_routes: ' +
317
+ @log.info 'DandelionS1/default_routes: ' +
275
318
  "root: %s path: %s" % [@root, path]
276
319
  end
277
320
 
278
321
  if filepath.length < 1 or filepath[-1] == '/' then
279
- filepath += 'index.html'
322
+ filepath += 'index.html'
280
323
  FileX.read filepath
281
324
  elsif FileX.directory? filepath then
282
- Redirect.new (filepath + '/')
325
+ Redirect.new (filepath + '/')
283
326
  elsif FileX.exists? filepath then
284
327
 
285
328
  content_type = @filetype[filepath[/\w+$/].to_sym]
@@ -299,27 +342,39 @@ class RackRscript
299
342
  else
300
343
  Time.now.inspect
301
344
  end
302
-
345
+
346
+ end
347
+
348
+ # file exists?
349
+ a = Dir.glob( File.join(@root.to_s, '*')).select do |x|
350
+ File::ftype(x) == 'directory'
351
+ end
352
+
353
+ get /^\/#{a.join('|')}/ do
354
+
355
+ 'found' + a.inspect
356
+
303
357
  end
304
358
 
305
359
  end
306
-
360
+
307
361
  def run_request(request)
308
-
362
+
309
363
  #@log.debug 'inside run_request: ' + request.inspect if @log
310
364
  #@log.debug 'inside run_request @env: ' + @env.inspect if @log
311
365
  method_type = @env ? @env['REQUEST_METHOD'] : 'GET'
312
- content, content_type, status_code = run_route(request, method_type)
366
+ content, content_type, status_code = run_route(request, method_type)
313
367
  @log.info 'RackRscript/run_request/content: ' + content.inspect if @log
314
-
368
+ #puts 'content: ' + content.inspect if @debug
369
+
315
370
  #@log.debug 'inside run_request' if @log
316
371
  if content.is_a? Redirect then
317
-
372
+
318
373
  redirectx = content
319
374
  res = Rack::Response.new
320
375
  res.redirect(redirectx.to_url)
321
- res.finish
322
-
376
+ res.finish
377
+
323
378
  else
324
379
 
325
380
  e = $!
@@ -328,18 +383,18 @@ class RackRscript
328
383
  content, status_code = e, 500
329
384
  @log.debug 'RackRscript/call/error: ' + e if @log
330
385
  elsif content.nil? then
331
- content, status_code = "404: page not found", 404
332
- end
386
+ content, status_code = "404: page not found", 404
387
+ end
333
388
 
334
- tilt_proc = lambda do |s, content_type|
389
+ tilt_proc = lambda do |s, content_type|
335
390
  type = content_type[/[^\/]+$/]
336
391
  s = [s,{}] unless s.is_a? Array
337
392
  content, options = s
338
393
  [Tilt[type].new() {|x| content}.render(self, options), 'text/html']
339
394
  end
340
-
395
+
341
396
  passthru_proc = lambda{|c, ct| [c,ct]}
342
-
397
+
343
398
  ct_list = {
344
399
  'text/html' => passthru_proc,
345
400
  'text/haml' => tilt_proc,
@@ -353,62 +408,26 @@ class RackRscript
353
408
  'application/json' => passthru_proc,
354
409
  'image/png' => passthru_proc,
355
410
  'image/jpeg' => passthru_proc,
356
- 'image/svg+xml' => passthru_proc
411
+ 'image/svg+xml' => passthru_proc
357
412
  }
358
-
413
+
359
414
  content_type ||= 'text/html'
360
- status_code ||= 200
415
+ status_code ||= 200
361
416
  proc = ct_list[content_type]
362
417
  proc ||= passthru_proc
363
- content, content_type = proc.call(content, content_type)
364
-
418
+ content, content_type = proc.call(content, content_type)
419
+
365
420
  [status_code, {"Content-Type" => content_type}, [content]]
366
- end
367
-
421
+ end
422
+
368
423
  end
369
-
424
+
370
425
  alias jumpto run_request
371
426
 
372
427
  private
373
428
 
374
- def render99(name, type, opt={})
375
-
376
- options = {locals: {}}.merge!(opt)
377
- locals = options.delete :locals
378
-
379
- unless @templates[:layout] then
380
- template(:layout, type) { File.read('views/layout.' + type.to_s) }
381
- end
382
-
383
- layout = Tilt[type.to_s].new(options) {|x| @templates[:layout][:content]}
384
-
385
- unless @templates[name] then
386
- template(name, type) { File.read("views/%s.%s" % [name.to_s, type.to_s])}
387
- end
388
-
389
- template = Tilt[type.to_s].new(options) {|x| @templates[name][:content]}
390
- layout.render{ template.render(self, locals)}
391
- end
392
-
393
429
  def template(name, type=nil, &blk)
394
430
  @render.template name, type, &blk
395
- end
396
-
397
- def template99(name, type=nil, &blk)
398
- @templates.merge!({name => {content: blk.call, type: type}})
399
- @templates[name]
400
- end
401
-
402
- def tilt99(name, options={})
403
-
404
- options = {locals: {}}.merge!(opt)
405
- locals = options.delete :locals
406
- layout = Tilt[@templates[:layout][:type].to_s].new(options)\
407
- {|x| @templates[:layout][:content]}
408
- template = Tilt[@templates[name][:type].to_s].new(options) \
409
- {|x| @templates[name][:content]}
410
- layout.render{ template.render(self, locals)}
411
-
412
- end
413
-
431
+ end
432
+
414
433
  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.8
4
+ version: 1.2.2
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
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNjI4MTA0NTMzWhcN
15
- MjEwNjI4MTA0NTMzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC++hKM
17
- OkDJ8KaD3zDoCEYnfM3w0zHKKGDhTr5pAWeFG3uSMEDpjSFjpDTNLRQnYXnAlkTQ
18
- iqnnkZ3PgKD2DrL3Tebb7i1xxiYDEV8uQJApP51MPd/bgdLka8y1Z/gNx0o5N42Z
19
- biScnOGCSwl1XpQHVgO+zhhLoPhsb4rneuOZRrT14OiHb5ERJilqE5DJhhErymQv
20
- Cs5NDHjLp39Ui3jpe0j3qdNMWBH49V7tXREIyKaM/vjDQGvaS/NX4jLGw0YVdMCE
21
- W8yadDcqRDWkFK7cz+omnIUZHGu6tcJA2oTeL/plSfJneyUXxMAAqarmm9jKWGiE
22
- Sa9icmAmueF4fjrPm8wiXcrOwDiCS0nAAOsiXnfrwJq+IKZDdvfiYrbJYqV3jpxO
23
- Zc47nGjO3oH85YcaWd0IQqpt+c0CVzRTy3wBK35xDSI9oRh3Io3qZq8YnJxpCTtR
24
- f/tFJkOfA97aDaU+n6NflYphEJgQIbNR8g5HH6aYMC1hV9NHBSj9C0+IPL0CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUotFCdsTq
26
- oF0+c4sgqZqQGAzOATIwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
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
- BgkqhkiG9w0BAQsFAAOCAYEAaEAg7AuqvVp/0qFr40orUDsiWgUri6xIAr7HN+Iu
29
- EYDxIn873j5HorzAcrhKkfb9dNyJnpraac1Hpn9yqg7hIeW/mU0LIM9wNe4S9yTI
30
- IOh0hhqsyeas7UwaZA220Bx23yyxque7E9P+fqn5I4RwtJXn/kDXZHiarKfvFTH1
31
- mduzu/04uoC0dYEAL/ASvOr/EMxD+N9/vtoxR4+bj4W8WXozy9ySAlpuKwDuVXmc
32
- twljCSdBB5QG11CH/7S+k4JMhN9vx+n4R2tNqouqyE0/Smyn+gXfYHR5jXqOzGFa
33
- wmNbJU6Nt9ro9mFunXiNVM3t85KOb7HptOAv7uAu+yNHzDX6iDy43y1wwTN9Ca+0
34
- 468xA07gVSZnQMLOLNcZE6qcx5MZVkhjTlWVchzBAusC2pb37Ut8jXn+q92nqCw9
35
- tilHf4Ok7vnZYPnxQk5PY3q28lYoflnB47YIc0pdkJHI1M3YXL/HxrcZCEIHAU3W
36
- aTCBK3Pk2/LQtqaW3yaSg73t
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: 2020-06-28 00:00:00.000000000 Z
38
+ date: 2021-12-30 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rack
@@ -166,7 +166,7 @@ dependencies:
166
166
  version: '0.4'
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: 0.4.4
169
+ version: 0.4.5
170
170
  type: :runtime
171
171
  prerelease: false
172
172
  version_requirements: !ruby/object:Gem::Requirement
@@ -176,29 +176,29 @@ dependencies:
176
176
  version: '0.4'
177
177
  - - ">="
178
178
  - !ruby/object:Gem::Version
179
- version: 0.4.4
179
+ version: 0.4.5
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: polyrex-links
182
182
  requirement: !ruby/object:Gem::Requirement
183
183
  requirements:
184
- - - ">="
185
- - !ruby/object:Gem::Version
186
- version: 0.3.0
187
184
  - - "~>"
188
185
  - !ruby/object:Gem::Version
189
- version: '0.3'
186
+ version: '0.4'
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: 0.4.3
190
190
  type: :runtime
191
191
  prerelease: false
192
192
  version_requirements: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - ">="
195
- - !ruby/object:Gem::Version
196
- version: 0.3.0
197
194
  - - "~>"
198
195
  - !ruby/object:Gem::Version
199
- version: '0.3'
196
+ version: '0.4'
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: 0.4.3
200
200
  description:
201
- email: james@jamesrobertson.eu
201
+ email: digital.robertson@gmail.com
202
202
  executables: []
203
203
  extensions: []
204
204
  extra_rdoc_files: []
@@ -223,7 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  - !ruby/object:Gem::Version
224
224
  version: '0'
225
225
  requirements: []
226
- rubygems_version: 3.0.3
226
+ rubyforge_project:
227
+ rubygems_version: 2.7.10
227
228
  signing_key:
228
229
  specification_version: 4
229
230
  summary: Rack-Rscript is a light-weight alternative to Sinatra-Rscript.
metadata.gz.sig CHANGED
Binary file