rack-rscript 1.1.8 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
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