strelka 0.16.0 → 0.17.0

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: 23647cee39776b10a57af0b29ca50a2e13e0b53abf78de78f0b218522644cde0
4
- data.tar.gz: 1b6033a87b26725c92017ce8df7b6585c97e53da7cc4f816f9ccf732e906d9ca
3
+ metadata.gz: a69b39669c90e69f7ea690787d47981776c6a29044febf339d8890c240d6d1aa
4
+ data.tar.gz: 0bc16e15b5a1196a3944b99156eae5039eb8d9f7a5e71636974c41b7853f5fd2
5
5
  SHA512:
6
- metadata.gz: b5b04c3324860de06ddabe88505c14b3d5973cd5da834a3f5180d87afee1a28d1dd59f51ce1a31fe671c15017ac163b83ab432aed6d17fd76b7ec41bab19ab66
7
- data.tar.gz: b32f94d5569907faba7afe8d6369bbec209ab71af642dd975dfa2f796c08354d1b910692c4826c83786d82ef1ebf0d023f4c501daac7bd65215354d6d024cb7c
6
+ metadata.gz: bb4c71d572c432b6a13a6b66ab4a1060c45f0d326bff9a4841579a30d2dd55b2782662252a28d22195bf228651aa5a8ea225295a846000f874a6c2cb38ab6c9e
7
+ data.tar.gz: 9ae69ea8b0aadd5ae2567084641f7114cbf99089e7394b5e7dcd8438145f8a92570820d2b2b5bb457bb3f859b3334b82f2923eb205dba9d35f19d39c168432bc
Binary file
data.tar.gz.sig CHANGED
Binary file
data/ChangeLog CHANGED
@@ -1,8 +1,92 @@
1
+ 2019-09-18 Mahlon E. Smith <mahlon@martini.nu>
2
+
3
+ @ * .hgsigs:
4
+ | Added signature for changeset cb93b1af991d
5
+ | [c030e3247c99] [tip]
6
+ |
7
+ o * .hgtags:
8
+ | Added tag v0.17.0 for changeset c212307d6550
9
+ | [cb93b1af991d]
10
+ |
11
+ o * History.rdoc, lib/strelka.rb:
12
+ | Update for release.
13
+ | [c212307d6550] [v0.17.0]
14
+ |
15
+ 2019-09-18 Michael Granger <ged@FaerieMUD.org>
16
+
17
+ o * lib/strelka/httpresponse/negotiation.rb:
18
+ | Don't double-stringify negotiated response bodies
19
+ | [d12879aa565f]
20
+ |
21
+ o * lib/strelka/testing.rb, spec/strelka/testing_spec.rb:
22
+ | Remove references to `last_response`.
23
+ |
24
+ | This was an artifact of being written originally for Rake-Test,
25
+ | where the response is an implicit variable/method.
26
+ | [ba221bf72a44]
27
+ |
28
+ 2019-09-11 Michael Granger <ged@FaerieMUD.org>
29
+
30
+ o * lib/strelka/authprovider.rb, lib/strelka/command/start.rb,
31
+ | lib/strelka/constants.rb, spec/helpers.rb:
32
+ | Add an --isolate switch to the start command
33
+ | [2f9c17865a66]
34
+ |
35
+ 2019-09-05 Michael Granger <ged@FaerieMUD.org>
36
+
37
+ o * .build.yml:
38
+ | Fix the zmq package names in the build manifest
39
+ | [87dae6bd4ea1]
40
+ |
41
+ o * .build.yml:
42
+ | Add a build manifest
43
+ | [05bfca72174c]
44
+ |
45
+ o * Gemfile, gem.deps.rb:
46
+ | Change to Rubygems deps file
47
+ | [5102345959e9]
48
+ |
49
+ 2019-08-30 Michael Granger <ged@FaerieMUD.org>
50
+
51
+ o * History.rdoc:
52
+ | Remove reference to removed strelka subcommand
53
+ | [2fca4022b8d1]
54
+ |
55
+ o * lib/strelka/app/auth.rb:
56
+ | par(1) some long documentation lines
57
+ | [7c01e3af1122]
58
+ |
59
+ 2019-08-28 Mahlon E. Smith <mahlon@martini.nu>
60
+
61
+ o * cert/mahlon.pem, lib/strelka/command/start.rb:
62
+ | Add a means to run multiple handlers from the strelka launcher.
63
+ | [c6a7ae3b7060]
64
+ |
65
+ 2019-08-23 Michael Granger <ged@FaerieMUD.org>
66
+
67
+ o * lib/strelka/testing.rb, strelka.gemspec:
68
+ | Add a missing require
69
+ | [9240a5fe9a3f]
70
+ |
71
+ 2019-08-15 Michael Granger <ged@FaerieMUD.org>
72
+
73
+ o * .hgtags:
74
+ | Added tag v0.16.0 for changeset 7000eb609abe
75
+ | [84f0d95a2368]
76
+ |
77
+ o * .hgsigs:
78
+ | Added signature for changeset 32406f428655
79
+ | [7000eb609abe] [v0.16.0]
80
+ |
81
+ o * History.rdoc, lib/strelka.rb:
82
+ | Bump the minor version, update history.
83
+ | [32406f428655]
84
+ |
1
85
  2019-08-10 Michael Granger <ged@FaerieMUD.org>
2
86
 
3
- @ * lib/strelka/testing.rb, spec/strelka/testing_spec.rb:
87
+ o * lib/strelka/testing.rb, spec/strelka/testing_spec.rb:
4
88
  | Make the JSON matcher handle vendor subtypes
5
- | [33bb8d8c2f70] [tip]
89
+ | [33bb8d8c2f70]
6
90
  |
7
91
  o * .hoerc, Manifest.txt, lib/strelka/app.rb, lib/strelka/testing.rb,
8
92
  | spec/strelka/testing_spec.rb:
@@ -1,3 +1,16 @@
1
+ == v0.17.0 [2019-09-18] Mahlon E. Smith <mahlon@martini.nu>
2
+
3
+ Enhancements:
4
+
5
+ - Add an 'isolate' switch to the start command
6
+ - Add a 'number' switch to the start command
7
+
8
+
9
+ Bugfixes:
10
+
11
+ - Don't double-stringify negotiated response bodies
12
+
13
+
1
14
  == v0.16.0 [2019-08-10] Michael Granger <ged@FaerieMUD.org>
2
15
 
3
16
  Enhancements:
@@ -5,7 +18,6 @@ Enhancements:
5
18
  - Add spec matchers for matching JSON entity bodies
6
19
  - Allow a block to be passed when loading a plugin
7
20
  - Fix up to work under frozen-string-literals mode
8
- - Add setup subcommand to bin/strelka
9
21
  - Rewrite the WebSocketServer to be easier to use and offer some common facilities
10
22
  for managing connections, broadcasting to them, etc.
11
23
  - Update the restresources plugin for Sequel 5.0
@@ -22,7 +22,7 @@ module Strelka
22
22
  extend Loggability
23
23
 
24
24
  # Library version constant
25
- VERSION = '0.16.0'
25
+ VERSION = '0.17.0'
26
26
 
27
27
  # Version-control revision constant
28
28
  REVISION = %q$Revision$
@@ -149,21 +149,21 @@ require 'strelka/authprovider'
149
149
  #
150
150
  # no_perms_for '/login'
151
151
  #
152
- # Incoming requests are matched against +require_perms_for+ patterns, and the union
153
- # of all matching permissions is gathered, then any +no_auth_for+ patterns
154
- # are used to remove permissions from that set.
152
+ # Incoming requests are matched against +require_perms_for+ patterns, and the union of all
153
+ # matching permissions is gathered, then any +no_auth_for+ patterns are used to remove permissions
154
+ # from that set.
155
155
  #
156
156
  # If no require_perms_for patterns are declared, authorization is not checked, unless there is
157
157
  # at least one no_perms_for pattern, in which case all requests that don't match the negative
158
158
  # patterns are checked (with the permission set to the ID of the app).
159
159
  #
160
- # Authorization will be checked once authentication has succeeded. It will be called with at least the
161
- # credentials object returned from the authentication stage and the request object. Some AuthProviders
162
- # may opt to return authentication credentials as a User object of some kind (e.g., a database row,
163
- # LDAP entry, model object, etc.), but the simpler ones just return the login of the authenticated
164
- # +user+. The AuthProvider may also furnish additional useful arguments such as a database handle,
165
- # permission objects, etc. to your authorization block. See the documentation for your chosen
166
- # AuthProvider for details.
160
+ # Authorization will be checked once authentication has succeeded. It will be called with at least
161
+ # the credentials object returned from the authentication stage and the request object. Some
162
+ # AuthProviders may opt to return authentication credentials as a User object of some kind (e.g.,
163
+ # a database row, LDAP entry, model object, etc.), but the simpler ones just return the login of
164
+ # the authenticated +user+. The AuthProvider may also furnish additional useful arguments such as
165
+ # a database handle, permission objects, etc. to your authorization block. See the documentation
166
+ # for your chosen AuthProvider for details.
167
167
  #
168
168
  #
169
169
  # == Customizing Failure
@@ -32,9 +32,11 @@ class Strelka::AuthProvider
32
32
  Pluggability,
33
33
  Strelka::AbstractClass,
34
34
  Strelka::Delegation
35
- include Strelka::Constants,
35
+
36
+ prepend Strelka::Constants,
36
37
  Strelka::ResponseHelpers
37
38
 
39
+
38
40
  # Loggability API -- set up logging under the 'strelka' log host
39
41
  log_to :strelka
40
42
 
@@ -12,12 +12,29 @@ module Strelka::CLI::Start
12
12
  desc 'Start a Strelka app'
13
13
  arg :GEMNAME, :optional
14
14
  arg :APPNAME
15
+
15
16
  command :start do |cmd|
16
17
 
18
+ cmd.switch [:I, :isolate],
19
+ desc: "Run in a sandboxed environment",
20
+ long_desc: %{Run the app inside a sandbox using the Isolate gem. This is not
21
+ installed by default, so you'll need to ensure it's installed before
22
+ using this option.
23
+ },
24
+ negatable: false
25
+ cmd.flag [ :n, :number ],
26
+ desc: 'Spin up this many handlers via fork()',
27
+ default_value: 1,
28
+ type: Integer
29
+
17
30
  cmd.action do |global, options, args|
18
31
  appname = args.pop
19
32
  gemname = args.pop
20
33
 
34
+ if options.isolate
35
+ require 'isolate/now'
36
+ end
37
+
21
38
  gem( gemname ) if gemname
22
39
 
23
40
  app = if File.exist?( appname )
@@ -31,7 +48,12 @@ module Strelka::CLI::Start
31
48
  Strelka::CLI.prompt.say "Starting %s (%p)." % [ appname, app ]
32
49
  Strelka.load_config( global.config ) if global.config
33
50
  unless_dryrun( "starting the app" ) do
34
- app.run
51
+ if options.number == 1
52
+ app.run
53
+ else
54
+ options.number.times { fork { app.run } }
55
+ Process.waitall
56
+ end
35
57
  end
36
58
  end
37
59
  end
@@ -13,6 +13,7 @@ module Strelka::Constants
13
13
  # Import Mongrel2's constants, too
14
14
  include Mongrel2::Constants
15
15
 
16
+
16
17
  # Extend Mongrel2's HTTP constants collection
17
18
  module HTTP
18
19
  include Mongrel2::Constants::HTTP
@@ -361,11 +361,15 @@ module Strelka::HTTPResponse::Negotiation
361
361
  end
362
362
 
363
363
  self.log.debug " successfully transformed: %p! Setting up response." % [ new_body.class ]
364
- stringifiers = Strelka::HTTPResponse::Negotiation.stringifiers
365
- if stringifiers.key?( mimetype )
366
- new_body = stringifiers[ mimetype ].call( new_body )
364
+ unless new_body.is_a?( String )
365
+ stringifiers = Strelka::HTTPResponse::Negotiation.stringifiers
366
+ if stringifiers.key?( mimetype )
367
+ new_body = stringifiers[ mimetype ].call( new_body )
368
+ else
369
+ self.log.debug " no stringifier registered for %p" % [ mimetype ]
370
+ end
367
371
  else
368
- self.log.debug " no stringifier registered for %p" % [ mimetype ]
372
+ self.log.debug " body is already a String"
369
373
  end
370
374
 
371
375
  self.body = new_body
@@ -7,6 +7,9 @@ require 'loggability'
7
7
  require 'rspec'
8
8
  require 'rspec/matchers'
9
9
 
10
+ require 'strelka' unless defined?( Strelka )
11
+
12
+
10
13
  # A collection of testing functions and classes for use in Strelka handlers
11
14
  # and libraries.
12
15
  module Strelka::Testing
@@ -191,28 +194,28 @@ module Strelka::Testing
191
194
  #
192
195
  # Expect that the response consists of JSON of some sort:
193
196
  #
194
- # expect( last_response ).to have_json_body
197
+ # expect( response ).to have_json_body
195
198
  #
196
199
  # Expect that it's a JSON body that deserializes as an Object:
197
200
  #
198
- # expect( last_response ).to have_json_body( Object )
201
+ # expect( response ).to have_json_body( Object )
199
202
  # # -or-
200
- # expect( last_response ).to have_json_body( Hash )
203
+ # expect( response ).to have_json_body( Hash )
201
204
  #
202
205
  # Expect that it's a JSON body that deserializes as an Array:
203
206
  #
204
- # expect( last_response ).to have_json_body( Array )
207
+ # expect( response ).to have_json_body( Array )
205
208
  #
206
209
  # Expect that it's a JSON body that deserializes as an Object that has
207
210
  # expected keys:
208
211
  #
209
- # expect( last_response ).to have_json_body( Object ).
212
+ # expect( response ).to have_json_body( Object ).
210
213
  # that_includes( :id, :first_name, :last_name )
211
214
  #
212
215
  # Expect that it's a JSON body that deserializes as an Object that has
213
216
  # expected keys and values:
214
217
  #
215
- # expect( last_response ).to have_json_body( Object ).
218
+ # expect( response ).to have_json_body( Object ).
216
219
  # that_includes(
217
220
  # id: 118,
218
221
  # first_name: 'Princess',
@@ -221,7 +224,7 @@ module Strelka::Testing
221
224
  #
222
225
  # Expect that it's a JSON body that has other expected stuff:
223
226
  #
224
- # expect( last_response ).to have_json_body( Object ).
227
+ # expect( response ).to have_json_body( Object ).
225
228
  # that_includes(
226
229
  # last_name: a_string_matching(/humperdink/i),
227
230
  # profile: a_hash_including(:age, :eyecolor, :tracking_ability)
@@ -229,7 +232,7 @@ module Strelka::Testing
229
232
  #
230
233
  # Expect a JSON Array with objects that all match the criteria:
231
234
  #
232
- # expect( last_response ).to have_json_body( Array ).
235
+ # expect( response ).to have_json_body( Array ).
233
236
  # of_lenth( 20 ).
234
237
  # and( all( be_an(Integer) ) )
235
238
  #
@@ -427,43 +430,43 @@ module Strelka::Testing
427
430
  #
428
431
  # Expect that the response is a JSON Array of Objects:
429
432
  #
430
- # expect( last_response ).to have_json_collection
433
+ # expect( response ).to have_json_collection
431
434
  #
432
435
  # Expect that there be 4 Objects in the collection:
433
436
  #
434
- # expect( last_response ).to have_json_collection.of_length( 4 )
437
+ # expect( response ).to have_json_collection.of_length( 4 )
435
438
  #
436
439
  # Expect that the collection's objects each have an `id` field with the specified
437
440
  # IDs:
438
441
  #
439
- # expect( last_response ).to have_json_collection.with_ids( 3, 6, 11, 14 )
442
+ # expect( response ).to have_json_collection.with_ids( 3, 6, 11, 14 )
440
443
  # # -or- with an Array of IDs (no need to splat them)
441
444
  # ids = [3, 6, 11, 14]
442
- # expect( last_response ).to have_json_collection.with_ids( ids )
445
+ # expect( response ).to have_json_collection.with_ids( ids )
443
446
  #
444
447
  # Expect that the collection's objects have the same IDs as an Array of model
445
448
  # objects (or other objects that respond to #pk):
446
449
  #
447
450
  # payments = payment_fixture_factory.take( 4 )
448
- # expect( last_response ).to have_json_collection.
451
+ # expect( response ).to have_json_collection.
449
452
  # with_same_ids_as( payments )
450
453
  #
451
454
  # Expect that the collection's objects have the same IDs as an Array of Hashes with
452
455
  # `:id` fields:
453
456
  #
454
457
  # payment_rows = payments_table.where( sender_id: 71524 ).all
455
- # expect( last_response ).to have_json_collection.
458
+ # expect( response ).to have_json_collection.
456
459
  # with_same_ids_as( payment_rows )
457
460
  #
458
461
  # Expect that the collection's objects appear in the same order as the source Array:
459
462
  #
460
463
  # payments = payment_fixture_factory.take( 4 )
461
- # expect( last_response ).to have_json_collection.
464
+ # expect( response ).to have_json_collection.
462
465
  # with_same_ids_as( payments ).in_same_order
463
466
  #
464
467
  # Add aggregate matchers for each object in the collection:
465
468
  #
466
- # expect( last_response ).to have_json_collection.
469
+ # expect( response ).to have_json_collection.
467
470
  # with_same_ids_as( payments ).
468
471
  # and_all( include(amount_cents: a_value > 0) )
469
472
  #
@@ -617,15 +620,10 @@ module Strelka::Testing
617
620
  end
618
621
 
619
622
 
620
- ### Parse the body of the last response and return it as a Ruby object.
621
- def last_response_json_body( expected_type=nil )
622
- @have_json_body_matcher ||= begin
623
- matcher = have_json_body( expected_type )
624
- expect( last_response ).to( matcher )
625
- matcher
626
- end
627
-
628
- return @have_json_body_matcher.parsed_response_body
623
+ ### Parse the body of the given +response+ and return it as a Ruby object.
624
+ def response_json_body( response )
625
+ response.body.rewind
626
+ Yajl::Parser.parse( response.body, check_utf8: true, symbolize_keys: true )
629
627
  end
630
628
 
631
629
  end # module Strelka::Testing
@@ -3,15 +3,7 @@
3
3
  # frozen-string-literal: true
4
4
 
5
5
  BEGIN {
6
- require 'pathname'
7
- basedir = Pathname.new( __FILE__ ).dirname.parent
8
-
9
- srcdir = basedir.parent
10
- mongrel2dir = srcdir + 'Mongrel2/lib'
11
-
12
- $stderr.puts "Adding %s to the LOAD_PATH..." % [ mongrel2dir ]
13
- $LOAD_PATH.unshift( mongrel2dir.to_s ) unless
14
- !mongrel2dir.directory? || $LOAD_PATH.include?( mongrel2dir.to_s )
6
+ $LOAD_PATH.unshift( '../Mongrel2/lib' )
15
7
  }
16
8
 
17
9
  # SimpleCov test coverage reporting; enable this using the :coverage rake task
@@ -722,48 +722,21 @@ RSpec.describe( Strelka::Testing ) do
722
722
  end
723
723
 
724
724
 
725
- describe "last_response_json_body" do
725
+ describe "response_json_body" do
726
726
 
727
727
  let( :request ) { @request_factory.get('/v1/api') }
728
728
 
729
-
730
- context "with a non-JSON response" do
731
-
732
- let( :last_response ) { request.response }
733
-
734
-
735
- it "fails due to the have_json_body expectation first" do
736
- expect {
737
- expect( last_response_json_body[:title] ).to eq( 'Ethel the Aardvark' )
738
- }.to fail_matching( /doesn't have a content-type/i )
739
- end
740
-
729
+ let( :response ) do
730
+ response = request.response
731
+ response.content_type = 'application/json'
732
+ response.body = StringIO.new( '{"title":"Ethel the Aardvark"}' )
733
+ return response
741
734
  end
742
735
 
743
736
 
744
- context "with a JSON response" do
745
-
746
- let( :last_response ) do
747
- response = request.response
748
- response.content_type = 'application/json'
749
- response.body = '{"title":"Ethel the Aardvark"}'
750
- return response
751
- end
752
-
753
-
754
- it "returns the JSON body if the inner expectation passes" do
755
- expect {
756
- expect( last_response_json_body[:title] ).to eq( 'Ethel the Aardvark' )
757
- }.to_not raise_error()
758
- end
759
-
760
-
761
- it "fails if the outer expectation fails" do
762
- expect {
763
- expect( last_response_json_body ).to be_empty
764
- }.to fail_matching( /empty\?/ )
765
- end
766
-
737
+ it "returns the JSON body as a Hash with Symbol keys" do
738
+ expect( response_json_body(response) ).to be_a( Hash ).
739
+ and( include(title: "Ethel the Aardvark") )
767
740
  end
768
741
 
769
742
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strelka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.0
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mahlon E. Smith
@@ -11,31 +11,31 @@ bindir: bin
11
11
  cert_chain:
12
12
  - |
13
13
  -----BEGIN CERTIFICATE-----
14
- MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
15
- REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xODExMjAxODI5NTlaFw0xOTExMjAxODI5
16
- NTlaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
17
- hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
18
- L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
19
- M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
20
- 5PU2AEbf04GGSrmqADGWXeaslaoRdb1fu/0M5qfPTRn5V39sWD9umuDAF9qqil/x
21
- Sl6phTvgBrG8GExHbNZpLARd3xrBYLEFsX7RvBn2UPfgsrtvpdXjsHGfpT3IPN+B
22
- vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
23
- dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
24
- ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
25
- N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
26
- VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DAcBgNVHREE
27
- FTATgRFnZWRARmFlcmllTVVELm9yZzAcBgNVHRIEFTATgRFnZWRARmFlcmllTVVE
28
- Lm9yZzANBgkqhkiG9w0BAQsFAAOCAYEAP9Ffkvg4e8CjIWi8SykQ8oJSS8jbmbgF
29
- abke3vXWLG6V9kFiObuJd5wZRBluJANu7bEtjgc3fFaGVP2XxVdCpVjNbmMDg4Qp
30
- ovvczP53X6pQP2RSZgxF6Lblvy8y11RziUTVRG/Z2aJHsElo6gI7vQznE/OSDrhC
31
- gEhr8uaIUt7D+HZWRbU0+MkKPpL5uMqaFuJbqXEvSwPTuUuYkDfNfsjQO7ruWBac
32
- bxHCrvpZ6Tijc0nrlyXi6gPOCLeaqhau2xFnlvKgELwsGYSoKBJyDwqtQ5kwrOlU
33
- tkSyLrfZ+RZcH535Hyvif7ZxB0v5OxXXoec+N2vrUsEUMRDL9dg4/WFdN8hIOixF
34
- 3IPKpZ1ho0Ya5q7yhygtBK9/NBFHw+nbJjcltfPDBXleRe8u73gnQo8AZIhStYSP
35
- v4qqqa27Bs468d6SoPxjSm8a2mM9HZ4OdWhq4tFsbTeXDVquCfi64OTEaTt2xQdR
36
- JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
14
+ MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdtYWhs
15
+ b24vREM9bWFydGluaS9EQz1udTAeFw0xODEyMDkwMzMxNTJaFw0xOTEyMDkwMzMx
16
+ NTJaMCIxIDAeBgNVBAMMF21haGxvbi9EQz1tYXJ0aW5pL0RDPW51MIIBojANBgkq
17
+ hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA3cz7ILM8n+Y5nvz7mVRVqE8LusWdT8NX
18
+ nlnETynDndenI+a2S3j22DR+U4ooGUjuCHE3iR1CVmTDGbxFfNRfmnC1AN9Hybat
19
+ ewW+onvMBye7yfO0bJB5vkqaW5vd35rzquOffgBtJMo7rPRu6pX8RkL34Wnew4J7
20
+ POooUcYbWSAO934HSCUC8wVm6b4v/ejVF1Lk44Dz45jtMqtR7KTAtpipdbTXAarO
21
+ HQy3eVes/0oTqhk4CP50r1KP09nUHTn2lzVaCN9vmNE/Jwe0AuQ9ImvZXPpCsMMl
22
+ V03/tuJ++48sVmOIusJkASPupXcdI6zqsjYw2vLMFtuYNskRSvwbn6Wm6x9hLWWj
23
+ IRp5FvHPORLRCHFizXRmXZ3PyFHqbv6m4yG0SyfMzOXPk3Hn5dqqmK+BFCihTZIN
24
+ fqpBmuxyNEE21fSO9ALLlWeW9ffg9Ye5Sc1n3yEyv8rPb9VDvi1B5N6xIcDFMNVs
25
+ RiCamNbET4Sq9VIYwYtcB1f6EataqFEhAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
26
+ VR0PBAQDAgSwMB0GA1UdDgQWBBR8KtAhZIhe2uPQHCgU5HurIG7crTAcBgNVHREE
27
+ FTATgRFtYWhsb25AbWFydGluaS5udTAcBgNVHRIEFTATgRFtYWhsb25AbWFydGlu
28
+ aS5udTANBgkqhkiG9w0BAQsFAAOCAYEABMyF43FOfY+DULlLbR/S6k62DxsJn6dA
29
+ YE1DI0o/IGN9t6ga7iQT944HM3gg1AIsONBvFwU31/VLG3Pp91k6YVEQvZITKBOz
30
+ EVjhTfKBvoqWyuwMKCYn9ZtCASfZDFec7SMsgwIbKuncb6RKjH9cYauuDOtd55lC
31
+ pie+OmOF330StWH/Z/WY5WiRGstpL5/Qk0y4NMqcV/T59fNIVNxG4k5/VNgVYQIM
32
+ 4Yrvx5tkYPIvPOroIGfDu6CfrQVNg4QJrQN2LZmXGoEV47v1kdV9kMAeFDBkTmPS
33
+ XqnsRK6X7WhFON8/7CliGvF+T8dmfGJS5R46x7FIzendFMA6pY4IknfGEabzyL9O
34
+ 8IIu155/luqHPnzYLlRi4n+hzwkwGh9erCmbMqrsATqVf4C20H7EAOlDlhmNDqiV
35
+ g3nSb5geweeDxf7Phf3qyZgglWB4UGR0aUkzOwj6yFj1ugCU2R7CwNhqgmtdkvYm
36
+ tuLuv1oCfpuEmRh93FiLFsOLV3auiU+c
37
37
  -----END CERTIFICATE-----
38
- date: 2019-08-15 00:00:00.000000000 Z
38
+ date: 2019-09-18 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: configurability
@@ -496,7 +496,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
496
496
  - !ruby/object:Gem::Version
497
497
  version: '0'
498
498
  requirements: []
499
- rubygems_version: 3.0.3
499
+ rubygems_version: 3.0.4
500
500
  signing_key:
501
501
  specification_version: 4
502
502
  summary: Strelka is a framework for creating and deploying Mongrel2[http://mongrel2.org/]
metadata.gz.sig CHANGED
Binary file