strelka 0.16.0 → 0.17.0

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: 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