praxis 2.0.pre.1 → 2.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -20
- data/lib/praxis/action_definition/headers_dsl_compiler.rb +1 -1
- data/lib/praxis/action_definition.rb +1 -1
- data/lib/praxis/application.rb +1 -1
- data/lib/praxis/config.rb +1 -1
- data/lib/praxis/media_type_identifier.rb +2 -1
- data/lib/praxis/notifications.rb +1 -1
- data/lib/praxis/resource_definition.rb +5 -5
- data/lib/praxis/route.rb +1 -1
- data/lib/praxis/routing_config.rb +1 -1
- data/lib/praxis/trait.rb +1 -1
- data/lib/praxis/types/media_type_common.rb +2 -2
- data/lib/praxis/types/multipart.rb +1 -1
- data/lib/praxis/types/multipart_array/part_definition.rb +1 -1
- data/lib/praxis/types/multipart_array.rb +2 -2
- data/lib/praxis/version.rb +1 -1
- data/praxis.gemspec +6 -6
- data/spec/praxis/action_definition_spec.rb +1 -1
- data/spec/praxis/application_spec.rb +1 -1
- data/spec/praxis/collection_spec.rb +3 -2
- data/spec/praxis/config_spec.rb +2 -2
- data/spec/praxis/media_type_spec.rb +0 -10
- data/spec/praxis/middleware_app_spec.rb +1 -1
- data/spec/praxis/request_stages/action_spec.rb +8 -1
- data/spec/praxis/response_definition_spec.rb +7 -4
- data/spec/praxis/response_spec.rb +1 -1
- data/spec/praxis/router_spec.rb +1 -1
- data/spec/spec_app/app/controllers/instances.rb +1 -1
- metadata +22 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f23deb4aca50709972c23925ed41fde1fe98baaf7e865513b7f047611bd3af3d
|
4
|
+
data.tar.gz: 512839b90d37a8ac2cb67a7a14f32a8353160d15ef43d0066c860ec95da3002e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19ff50cbc1d7c9b003725f96122cfab8c8c221f54d8df5a142299ad260dcb2f9597d504e6761c18badee02a768d18dab81dc76425abda01704a9e61f0aae3769
|
7
|
+
data.tar.gz: 3b2885d5e46d68848541dfed03dabe8cc1df71a430d1fdd42fc330035f544fee5b05291cf8087c00a51c987c2087e4f6e2a502522566e61a88f50e0adee4a71f
|
data/.travis.yml
CHANGED
@@ -1,28 +1,13 @@
|
|
1
|
-
language: ruby
|
2
|
-
cache: bundler
|
3
1
|
sudo: false
|
2
|
+
language: ruby
|
4
3
|
rvm:
|
5
|
-
- 2.3
|
6
4
|
- 2.4
|
7
5
|
- 2.5
|
8
6
|
- 2.6
|
7
|
+
- 2.7
|
8
|
+
script:
|
9
|
+
- bundle exec rspec spec
|
9
10
|
branches:
|
10
11
|
only:
|
11
12
|
- master
|
12
|
-
|
13
|
-
- gem update --system # Due to: https://github.com/travis-ci/travis-ci/issues/8978
|
14
|
-
# Leaving all API browser testing commented out as there are some very node dependencies that
|
15
|
-
# need to be worked out and updated
|
16
|
-
# node_js:
|
17
|
-
# - "0.10"
|
18
|
-
# before_install:
|
19
|
-
# - nvm install 0.10
|
20
|
-
# - node --version
|
21
|
-
# - cd lib/api_browser
|
22
|
-
# - npm install
|
23
|
-
# - cd ../..
|
24
|
-
# script:
|
25
|
-
# - bundle exec rspec spec
|
26
|
-
# - cd lib/api_browser
|
27
|
-
# - npm test
|
28
|
-
# - cd ../..
|
13
|
+
- /.*/
|
@@ -25,7 +25,7 @@ module Praxis
|
|
25
25
|
# Defining the existence without any other options can only mean that it is required (otherwise it is a useless definition)
|
26
26
|
options[:required] = true if options.empty?
|
27
27
|
end
|
28
|
-
key name , String, options
|
28
|
+
key name , String, **options
|
29
29
|
end
|
30
30
|
|
31
31
|
# Override the attribute to really call "key" in the hash (for temporary backwards compat)
|
data/lib/praxis/application.rb
CHANGED
@@ -114,7 +114,7 @@ module Praxis
|
|
114
114
|
|
115
115
|
def config(key=nil, type=Attributor::Struct, **opts, &block)
|
116
116
|
if block_given? || (type==Attributor::Struct && !opts.empty? )
|
117
|
-
@config.define(key, type, opts, &block)
|
117
|
+
@config.define(key, type, **opts, &block)
|
118
118
|
else
|
119
119
|
@config.get
|
120
120
|
end
|
data/lib/praxis/config.rb
CHANGED
@@ -146,7 +146,8 @@ module Praxis
|
|
146
146
|
if self.parameters.empty?
|
147
147
|
self
|
148
148
|
else
|
149
|
-
|
149
|
+
val = {type: self.type, subtype: self.subtype, suffix: self.suffix}
|
150
|
+
MediaTypeIdentifier.load(val)
|
150
151
|
end
|
151
152
|
end
|
152
153
|
|
data/lib/praxis/notifications.rb
CHANGED
@@ -49,7 +49,7 @@ module Praxis
|
|
49
49
|
unless base_attributes.empty?
|
50
50
|
params do
|
51
51
|
base_attributes.each do |base_name, base_attribute|
|
52
|
-
attribute base_name, base_attribute.type, base_attribute.options
|
52
|
+
attribute base_name, base_attribute.type, **base_attribute.options
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -87,9 +87,9 @@ module Praxis
|
|
87
87
|
@display_name = string
|
88
88
|
end
|
89
89
|
|
90
|
-
def on_finalize
|
90
|
+
def on_finalize(&block)
|
91
91
|
if block_given?
|
92
|
-
@on_finalize <<
|
92
|
+
@on_finalize << proc(&block)
|
93
93
|
end
|
94
94
|
|
95
95
|
@on_finalize
|
@@ -168,7 +168,7 @@ module Praxis
|
|
168
168
|
|
169
169
|
parent_attribute = parent_action.params.attributes[parent_name]
|
170
170
|
|
171
|
-
attribute name, parent_attribute.type, parent_attribute.options
|
171
|
+
attribute name, parent_attribute.type, **parent_attribute.options
|
172
172
|
end
|
173
173
|
end
|
174
174
|
end
|
@@ -221,7 +221,7 @@ module Praxis
|
|
221
221
|
end
|
222
222
|
|
223
223
|
def to_href( params )
|
224
|
-
canonical_path.primary_route.path.expand(params)
|
224
|
+
canonical_path.primary_route.path.expand(params.transform_values(&:to_s))
|
225
225
|
end
|
226
226
|
|
227
227
|
def parse_href(path)
|
data/lib/praxis/route.rb
CHANGED
@@ -24,7 +24,7 @@ module Praxis
|
|
24
24
|
path_params = example_hash.select{|k,v| path_param_keys.include? k }
|
25
25
|
# Let's generate the example only using required params, to avoid mixing incompatible parameters
|
26
26
|
query_params = example_hash.select{|k,v| required_query_param_keys.include? k }
|
27
|
-
example = { verb: self.verb, url: self.path.expand(path_params), query_params: query_params }
|
27
|
+
example = { verb: self.verb, url: self.path.expand(path_params.transform_values(&:to_s)), query_params: query_params }
|
28
28
|
|
29
29
|
end
|
30
30
|
|
@@ -55,7 +55,7 @@ module Praxis
|
|
55
55
|
path = (base + path).gsub('//','/')
|
56
56
|
# Reject our own options
|
57
57
|
route_name = options.delete(:name);
|
58
|
-
pattern = Mustermann.new(path, {ignore_unknown_options: true}.merge( options ))
|
58
|
+
pattern = Mustermann.new(path, **{ignore_unknown_options: true}.merge( options ))
|
59
59
|
route = Route.new(verb, pattern, version, name: route_name, prefixed_path: prefixed_path, **options)
|
60
60
|
@routes << route
|
61
61
|
route
|
data/lib/praxis/trait.rb
CHANGED
@@ -76,7 +76,7 @@ module Praxis
|
|
76
76
|
dsl_compiler: ActionDefinition::HeadersDSLCompiler,
|
77
77
|
case_insensitive_load: true
|
78
78
|
}
|
79
|
-
Attributor::Hash.of(key: String).construct(Proc.new {}, hash_opts)
|
79
|
+
Attributor::Hash.of(key: String).construct(Proc.new {}, **hash_opts)
|
80
80
|
else
|
81
81
|
Attributor::Hash.construct(Proc.new {})
|
82
82
|
end
|
@@ -32,8 +32,8 @@ module Praxis
|
|
32
32
|
#
|
33
33
|
# @return [String] the string-representation of this type's identifier
|
34
34
|
def identifier(identifier=nil)
|
35
|
-
return @identifier
|
36
|
-
|
35
|
+
return @identifier unless identifier
|
36
|
+
@identifier = MediaTypeIdentifier.load(identifier)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -12,7 +12,7 @@ module Praxis
|
|
12
12
|
return value if value.kind_of?(self) || value.nil?
|
13
13
|
|
14
14
|
unless (value.kind_of?(::String) && ! content_type.nil?)
|
15
|
-
raise Attributor::CoercionError
|
15
|
+
raise Attributor::CoercionError.new(context: context, from: value.class, to: self.name, value: value)
|
16
16
|
end
|
17
17
|
|
18
18
|
headers = {'Content-Type' => content_type}
|
@@ -14,7 +14,7 @@ module Praxis
|
|
14
14
|
|
15
15
|
def update_attribute(attribute, options, block)
|
16
16
|
attribute.options.merge!(options)
|
17
|
-
attribute.type.attributes(options, &block)
|
17
|
+
attribute.type.attributes(**options, &block)
|
18
18
|
end
|
19
19
|
|
20
20
|
def create_attribute(type=Attributor::Struct, **opts, &block)
|
@@ -83,7 +83,7 @@ module Praxis
|
|
83
83
|
|
84
84
|
self.multiple << name if multiple
|
85
85
|
|
86
|
-
compiler = Attributor::DSLCompiler.new(self, opts)
|
86
|
+
compiler = Attributor::DSLCompiler.new(self, **opts)
|
87
87
|
|
88
88
|
if filename
|
89
89
|
filename_attribute = compiler.define('filename', String, required: true)
|
@@ -218,7 +218,7 @@ module Praxis
|
|
218
218
|
attr_accessor :preamble
|
219
219
|
attr_reader :content_type
|
220
220
|
|
221
|
-
def initialize(content_type: self.class.identifier)
|
221
|
+
def initialize(content_type: self.class.identifier.to_s)
|
222
222
|
self.content_type = content_type
|
223
223
|
end
|
224
224
|
|
data/lib/praxis/version.rb
CHANGED
data/praxis.gemspec
CHANGED
@@ -21,11 +21,11 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.executables << 'praxis'
|
22
22
|
|
23
23
|
spec.add_dependency 'rack', '>= 1'
|
24
|
-
spec.add_dependency 'mustermann', '>=
|
24
|
+
spec.add_dependency 'mustermann', '>=1.1', '<=2'
|
25
25
|
spec.add_dependency 'activesupport', '>= 3'
|
26
26
|
spec.add_dependency 'mime', '~> 0'
|
27
|
-
spec.add_dependency 'praxis-blueprints', '
|
28
|
-
spec.add_dependency 'attributor', '
|
27
|
+
spec.add_dependency 'praxis-blueprints', '>= 3.4'
|
28
|
+
spec.add_dependency 'attributor', '>= 5.4'
|
29
29
|
spec.add_dependency 'thor'
|
30
30
|
spec.add_dependency 'terminal-table', '~> 1.4'
|
31
31
|
|
@@ -33,9 +33,9 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_development_dependency 'rake', '~> 0.9'
|
34
34
|
spec.add_development_dependency 'rake-notes', '~> 0'
|
35
35
|
if RUBY_PLATFORM !~ /java/
|
36
|
-
spec.add_development_dependency 'pry'
|
37
|
-
spec.add_development_dependency 'pry-byebug'
|
38
|
-
spec.add_development_dependency 'pry-stack_explorer'
|
36
|
+
spec.add_development_dependency 'pry'
|
37
|
+
spec.add_development_dependency 'pry-byebug'
|
38
|
+
spec.add_development_dependency 'pry-stack_explorer'
|
39
39
|
spec.add_development_dependency 'sqlite3', '~> 1'
|
40
40
|
else
|
41
41
|
spec.add_development_dependency 'jdbc-sqlite3'
|
@@ -281,7 +281,7 @@ describe Praxis::ActionDefinition do
|
|
281
281
|
subject(:action) { resource_definition.actions[:show] }
|
282
282
|
|
283
283
|
it 'works' do
|
284
|
-
expansion = action.primary_route.path.expand(cloud_id:232, id: 2)
|
284
|
+
expansion = action.primary_route.path.expand(cloud_id:'232', id: '2')
|
285
285
|
expect(expansion).to eq "/api/clouds/232/instances/2"
|
286
286
|
end
|
287
287
|
|
@@ -27,7 +27,7 @@ describe Praxis::Application do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'passes the params and block to config' do
|
30
|
-
ret = app.config(:key, Attributor::Hash, {option: :one}, &myblock)
|
30
|
+
ret = app.config(:key, Attributor::Hash, **{option: :one}, &myblock)
|
31
31
|
expect(ret).to eq([:key, Attributor::Hash, {option: :one}, myblock])
|
32
32
|
end
|
33
33
|
|
@@ -8,6 +8,7 @@ describe Praxis::Collection do
|
|
8
8
|
subject!(:collection) do
|
9
9
|
Praxis::Collection.of(member_type)
|
10
10
|
end
|
11
|
+
let(:identifier_string) { subject.identifier.to_s }
|
11
12
|
|
12
13
|
context '.of' do
|
13
14
|
let(:member_type) do
|
@@ -16,7 +17,7 @@ describe Praxis::Collection do
|
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
19
|
-
|
20
|
+
it { expect(identifier_string).to eq('application/an-awesome-type; type=collection') }
|
20
21
|
|
21
22
|
it 'sets the collection on the media type' do
|
22
23
|
expect(member_type::Collection).to be(collection)
|
@@ -34,7 +35,7 @@ describe Praxis::Collection do
|
|
34
35
|
context 'defined explicitly' do
|
35
36
|
subject(:type) { Volume::Collection }
|
36
37
|
its(:member_type) { should be Volume }
|
37
|
-
|
38
|
+
it { expect(identifier_string).to eq('application/vnd.acme.volumes') }
|
38
39
|
end
|
39
40
|
|
40
41
|
context '.member_type' do
|
data/spec/praxis/config_spec.rb
CHANGED
@@ -72,12 +72,12 @@ describe Praxis::Config do
|
|
72
72
|
|
73
73
|
it 'it is not allowed if its for the top key' do
|
74
74
|
expect{
|
75
|
-
config.define nil, config_type, config_opts
|
75
|
+
config.define nil, config_type, **config_opts
|
76
76
|
}.to raise_error(/You cannot define the top level configuration with a non-Struct type/)
|
77
77
|
end
|
78
78
|
|
79
79
|
before do
|
80
|
-
config.define config_key, config_type, config_opts
|
80
|
+
config.define config_key, config_type, **config_opts
|
81
81
|
end
|
82
82
|
|
83
83
|
it 'sets the attribute to the defined type' do
|
@@ -52,16 +52,6 @@ describe Praxis::MediaType do
|
|
52
52
|
subject(:address_klass) { address.class }
|
53
53
|
|
54
54
|
context '#identifier' do
|
55
|
-
context 'in praxis v0' do
|
56
|
-
it 'should be a kind of String' do
|
57
|
-
if Praxis::VERSION =~ /^0/
|
58
|
-
expect(subject.identifier).to be_kind_of(String)
|
59
|
-
else
|
60
|
-
raise 'Please remove this spec which is no longer pertinent'
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
55
|
context 'in praxis v1.0 and beyond' do
|
66
56
|
it 'should be a kind of Praxis::MediaTypeIdentifier' do
|
67
57
|
pending('interface-breaking change') if Praxis::VERSION =~ /^0/
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Praxis::MiddlewareApp do
|
4
4
|
|
5
5
|
let(:init_args){ { root: 'here'} }
|
6
|
-
let(:middleware) { Praxis::MiddlewareApp.for( init_args ) }
|
6
|
+
let(:middleware) { Praxis::MiddlewareApp.for( **init_args ) }
|
7
7
|
let(:instance){ middleware.new(target)}
|
8
8
|
|
9
9
|
context '.for' do
|
@@ -26,7 +26,14 @@ describe Praxis::RequestStages::Action do
|
|
26
26
|
|
27
27
|
context '.execute' do
|
28
28
|
before do
|
29
|
-
expect(controller).to receive(action_stage.name)
|
29
|
+
expect(controller).to receive(action_stage.name) do |args|
|
30
|
+
if args
|
31
|
+
expect(args).to eq({})
|
32
|
+
else
|
33
|
+
expect(args).to eq(nil)
|
34
|
+
end
|
35
|
+
end.and_return(controller_response)
|
36
|
+
|
30
37
|
end
|
31
38
|
let(:controller_response){ controller.response }
|
32
39
|
|
@@ -448,7 +448,7 @@ describe Praxis::ResponseDefinition do
|
|
448
448
|
context 'with legacy multipart response' do
|
449
449
|
subject(:response) { Praxis::Responses::Ok.new(status: response_status, headers: response_headers) }
|
450
450
|
|
451
|
-
let(:part) { Praxis::MultipartPart.new('done', {'Status' => 200, 'Content-Type' => 'application/special'}
|
451
|
+
let(:part) { Praxis::MultipartPart.new('done', {'Status' => 200, 'Content-Type' => 'application/special'},**{}) }
|
452
452
|
|
453
453
|
before do
|
454
454
|
response_definition.parts like: :ok, media_type: 'application/special'
|
@@ -463,7 +463,7 @@ describe Praxis::ResponseDefinition do
|
|
463
463
|
end
|
464
464
|
|
465
465
|
context 'with invalid part' do
|
466
|
-
let(:part) { Praxis::MultipartPart.new('done', {'Status' => 200, "Location" => "somewhere"}
|
466
|
+
let(:part) { Praxis::MultipartPart.new('done', {'Status' => 200, "Location" => "somewhere"}) }
|
467
467
|
|
468
468
|
it 'validates' do
|
469
469
|
expect {
|
@@ -494,6 +494,7 @@ describe Praxis::ResponseDefinition do
|
|
494
494
|
let(:location) { %r{/my/url/} }
|
495
495
|
let(:headers) { {'Header1' => 'Value1'} }
|
496
496
|
let(:parts) { nil }
|
497
|
+
let(:parts_block) { nil }
|
497
498
|
|
498
499
|
let(:response) do
|
499
500
|
Praxis::ResponseDefinition.new(:custom) do
|
@@ -505,7 +506,9 @@ describe Praxis::ResponseDefinition do
|
|
505
506
|
before do
|
506
507
|
response.description(description) if description
|
507
508
|
response.location(location) if location
|
508
|
-
|
509
|
+
if parts || parts_block
|
510
|
+
parts ? response.parts(nil, **parts, &parts_block) : response.parts(nil, &parts_block)
|
511
|
+
end
|
509
512
|
response.headers(headers) if headers
|
510
513
|
end
|
511
514
|
|
@@ -572,7 +575,7 @@ describe Praxis::ResponseDefinition do
|
|
572
575
|
its([:status]){ should == 200 }
|
573
576
|
end
|
574
577
|
context 'using a full response definition block' do
|
575
|
-
let(:
|
578
|
+
let(:parts_block) do
|
576
579
|
Proc.new do
|
577
580
|
status 234
|
578
581
|
media_type 'custom_media'
|
@@ -117,7 +117,7 @@ describe Praxis::Response do
|
|
117
117
|
end
|
118
118
|
|
119
119
|
context 'multipart responses' do
|
120
|
-
let(:part) { Praxis::MultipartPart.new('not so ok', {'Status' => 400, "Location" => "somewhere"}
|
120
|
+
let(:part) { Praxis::MultipartPart.new('not so ok', {'Status' => 400, "Location" => "somewhere"}) }
|
121
121
|
|
122
122
|
context '#add_part' do
|
123
123
|
|
data/spec/praxis/router_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe Praxis::Router do
|
|
6
6
|
let(:action){ double("action", resource_definition: resource_definition ) }
|
7
7
|
let(:target){ double("target", action: action ) }
|
8
8
|
let(:args){ {version: "1.0"} }
|
9
|
-
subject(:matcher){ Praxis::Router::VersionMatcher.new(target
|
9
|
+
subject(:matcher){ Praxis::Router::VersionMatcher.new(target,**args) }
|
10
10
|
|
11
11
|
context '.initialize' do
|
12
12
|
let(:args){ {} }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: praxis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.pre.
|
4
|
+
version: 2.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep M. Blanquer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-05-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -31,20 +31,20 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '1.1'
|
35
35
|
- - "<="
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
37
|
+
version: '2'
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
requirements:
|
42
42
|
- - ">="
|
43
43
|
- !ruby/object:Gem::Version
|
44
|
-
version: '
|
44
|
+
version: '1.1'
|
45
45
|
- - "<="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: activesupport
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,30 +77,30 @@ dependencies:
|
|
77
77
|
name: praxis-blueprints
|
78
78
|
requirement: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3.
|
82
|
+
version: '3.4'
|
83
83
|
type: :runtime
|
84
84
|
prerelease: false
|
85
85
|
version_requirements: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '3.
|
89
|
+
version: '3.4'
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
91
|
name: attributor
|
92
92
|
requirement: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '5.
|
96
|
+
version: '5.4'
|
97
97
|
type: :runtime
|
98
98
|
prerelease: false
|
99
99
|
version_requirements: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '5.
|
103
|
+
version: '5.4'
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: thor
|
106
106
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,42 +175,42 @@ dependencies:
|
|
175
175
|
name: pry
|
176
176
|
requirement: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - "
|
178
|
+
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
type: :development
|
182
182
|
prerelease: false
|
183
183
|
version_requirements: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - "
|
185
|
+
- - ">="
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: '0'
|
188
188
|
- !ruby/object:Gem::Dependency
|
189
189
|
name: pry-byebug
|
190
190
|
requirement: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - "
|
192
|
+
- - ">="
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
194
|
+
version: '0'
|
195
195
|
type: :development
|
196
196
|
prerelease: false
|
197
197
|
version_requirements: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - "
|
199
|
+
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
201
|
+
version: '0'
|
202
202
|
- !ruby/object:Gem::Dependency
|
203
203
|
name: pry-stack_explorer
|
204
204
|
requirement: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - "
|
206
|
+
- - ">="
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
type: :development
|
210
210
|
prerelease: false
|
211
211
|
version_requirements: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - ">="
|
214
214
|
- !ruby/object:Gem::Version
|
215
215
|
version: '0'
|
216
216
|
- !ruby/object:Gem::Dependency
|