better_receive 0.5.0 → 0.6.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 +4 -4
- data/README.md +2 -1
- data/better_receive.gemspec +1 -1
- data/lib/better_receive/base.rb +1 -11
- data/lib/better_receive/mock.rb +8 -15
- data/lib/better_receive/stub.rb +1 -7
- data/lib/better_receive/version.rb +1 -1
- data/spec/lib/better_receive/mock_spec.rb +109 -127
- data/spec/lib/better_receive/stub_spec.rb +39 -45
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7dba7386ed326d7d13c41a1b901255f356d9547c
|
4
|
+
data.tar.gz: 8d01d997bf38eadbb9945e3f79284d6689baf4d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d2fc544f91d3a9ae0af34325406dfb7951c97b26bb406ec232e7b79a104bdc106050ca38d0c1ec770921cfe2f1e33e6b071188231d9cb13511250ecf4d27482
|
7
|
+
data.tar.gz: aa613a45884efc818abcefcbf5d44cd05663bd141f0c3eeeac3bb90b1a920f15ac11906190039923f2a82bd9e06e036c2d2d5888c95dc203b2ec605a8ae1db04
|
data/README.md
CHANGED
@@ -9,7 +9,6 @@ Test drive new functionality and prevent bugs by asserting objects respond to me
|
|
9
9
|
|
10
10
|
## Usage
|
11
11
|
|
12
|
-
|
13
12
|
```ruby
|
14
13
|
|
15
14
|
class Foo; end
|
@@ -30,6 +29,8 @@ Any of these situation will raise an error because instances of Foo do not respo
|
|
30
29
|
After the initial extra assertion, they continue to act like regular RSpec mocks/stubs.
|
31
30
|
|
32
31
|
|
32
|
+
If you are using a version of RSpec < 2.14, lock to BetterReceive version 0.5 or earlier.
|
33
|
+
|
33
34
|
## Contributing
|
34
35
|
|
35
36
|
1. Fork it
|
data/better_receive.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = BetterReceive::BETTER_VERSION
|
17
17
|
|
18
|
-
gem.add_dependency("rspec", "~> 2.
|
18
|
+
gem.add_dependency("rspec", "~> 2.14")
|
19
19
|
gem.add_development_dependency("rake", ">= 0")
|
20
20
|
gem.add_development_dependency("pry", ">= 0")
|
21
21
|
end
|
data/lib/better_receive/base.rb
CHANGED
@@ -18,10 +18,6 @@ module BetterReceive
|
|
18
18
|
RSpec::Matchers::BuiltIn::RespondTo.new(selector)
|
19
19
|
end
|
20
20
|
|
21
|
-
def subject_mock_proxy
|
22
|
-
@mock_proxy ||= subject.send(:__mock_proxy)
|
23
|
-
end
|
24
|
-
|
25
21
|
def any_instance_better_expect(selector, options, &block)
|
26
22
|
any_instance_should_respond_to selector
|
27
23
|
any_instance_add_expectation selector, &block
|
@@ -40,21 +36,15 @@ module BetterReceive
|
|
40
36
|
end
|
41
37
|
|
42
38
|
def any_instance_add_expectation(selector, &block)
|
43
|
-
RSpec::Mocks::space.add(subject)
|
44
|
-
|
45
|
-
subject.instance_variable_set(:@expectation_set, true)
|
46
39
|
subject.send(:observe!, selector)
|
47
40
|
|
48
41
|
subject.message_chains.add(selector, expectation_chain(selector, &block))
|
49
42
|
end
|
50
43
|
|
51
44
|
def any_instance_add_negative_expectation(selector, &block)
|
52
|
-
RSpec::Mocks::space.add(subject)
|
53
|
-
|
54
|
-
subject.instance_variable_set(:@expectation_set, true)
|
55
45
|
subject.send(:observe!, selector)
|
56
46
|
|
57
|
-
subject.message_chains.add(selector,
|
47
|
+
subject.message_chains.add(selector, expectation_chain(selector, &block)).never
|
58
48
|
end
|
59
49
|
|
60
50
|
end
|
data/lib/better_receive/mock.rb
CHANGED
@@ -4,6 +4,7 @@ module BetterReceive
|
|
4
4
|
def assert_with(selector, options={}, &block)
|
5
5
|
selector = selector.to_sym
|
6
6
|
if subject_is_any_instance?
|
7
|
+
subject.instance_variable_set(:@expectation_set, true)
|
7
8
|
any_instance_better_expect(selector, options, &block)
|
8
9
|
else
|
9
10
|
subject.should respond_to selector
|
@@ -14,6 +15,7 @@ module BetterReceive
|
|
14
15
|
def assert_negative_with(selector, options={}, &block)
|
15
16
|
selector = selector.to_sym
|
16
17
|
if subject_is_any_instance?
|
18
|
+
subject.instance_variable_set(:@expectation_set, true)
|
17
19
|
any_instance_better_not_expect(selector, options, &block)
|
18
20
|
else
|
19
21
|
subject.should respond_to selector
|
@@ -24,6 +26,10 @@ module BetterReceive
|
|
24
26
|
|
25
27
|
private
|
26
28
|
|
29
|
+
def subject_mock_proxy
|
30
|
+
@mock_proxy ||= RSpec::Mocks.proxy_for(subject)
|
31
|
+
end
|
32
|
+
|
27
33
|
def mock_subject_method(selector, options, &block)
|
28
34
|
location = options[:expected_from] || caller(1)[2]
|
29
35
|
subject_mock_proxy.add_message_expectation(location, selector, options, &block)
|
@@ -31,24 +37,11 @@ module BetterReceive
|
|
31
37
|
|
32
38
|
def negative_mock_subject_method(selector, options, &block)
|
33
39
|
location = options[:expected_from] || caller(1)[2]
|
34
|
-
subject_mock_proxy.
|
40
|
+
subject_mock_proxy.add_message_expectation(location, selector, options, &block).never
|
35
41
|
end
|
36
42
|
|
37
43
|
def expectation_chain(*args)
|
38
|
-
|
39
|
-
RSpec::Mocks::AnyInstance::PositiveExpectationChain.new(*args)
|
40
|
-
else
|
41
|
-
RSpec::Mocks::AnyInstance::ExpectationChain.new(*args)
|
42
|
-
end
|
44
|
+
RSpec::Mocks::AnyInstance::PositiveExpectationChain.new(*args)
|
43
45
|
end
|
44
|
-
|
45
|
-
def negative_expectation_chain(*args)
|
46
|
-
if defined?(RSpec::Mocks::AnyInstance::NegativeExpectationChain)
|
47
|
-
RSpec::Mocks::AnyInstance::NegativeExpectationChain.new(*args)
|
48
|
-
else
|
49
|
-
RSpec::Mocks::AnyInstance::NegativeExpectationChain.new(*args)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
46
|
end
|
54
47
|
end
|
data/lib/better_receive/stub.rb
CHANGED
@@ -20,18 +20,12 @@ module BetterReceive
|
|
20
20
|
any_instance_better_expect(selector, options, &block)
|
21
21
|
else
|
22
22
|
subject.should respond_to selector
|
23
|
-
|
23
|
+
subject.stub(selector, options, &block)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def stub_subject_method(selector, options, &block)
|
28
|
-
location = options[:expected_from] || caller(1)[2]
|
29
|
-
subject_mock_proxy.add_stub(location, selector, options, &block)
|
30
|
-
end
|
31
|
-
|
32
27
|
def expectation_chain(*args)
|
33
28
|
RSpec::Mocks::AnyInstance::StubChain.new(*args)
|
34
29
|
end
|
35
|
-
|
36
30
|
end
|
37
31
|
end
|
@@ -26,86 +26,82 @@ describe BetterReceive::Mock do
|
|
26
26
|
}
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
29
|
+
it "returns an rspec message expectation" do
|
30
|
+
foo.better_receive(:bar).should be_a RSpec::Mocks::MessageExpectation
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
mock_proxy.should_receive(:add_message_expectation)
|
32
|
+
foo.bar
|
33
|
+
end
|
35
34
|
|
36
|
-
|
37
|
-
|
35
|
+
it "responds to additional matchers(:with, :once...)" do
|
36
|
+
br_mock.assert_with(:bar).with('wibble')
|
38
37
|
|
39
|
-
|
40
|
-
|
38
|
+
foo.bar('wibble')
|
39
|
+
end
|
41
40
|
|
42
|
-
|
41
|
+
context "passing arguments" do
|
42
|
+
let(:selector) { :bar }
|
43
|
+
let(:options) { {passed: true} }
|
44
|
+
let(:block_param) { Proc.new {} }
|
43
45
|
|
44
|
-
|
46
|
+
before do
|
47
|
+
br_mock.assert_with(:bar, options, &block_param)
|
45
48
|
|
46
|
-
foo.
|
49
|
+
@expectation = RSpec::Mocks.proxy_for(foo).send(:method_doubles)[0][:expectations][0]
|
47
50
|
end
|
48
51
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
it "passes all arguments through to the mock_proxy" do
|
54
|
-
foo.should_receive(:send).with(:__mock_proxy).and_return(mock_proxy)
|
55
|
-
mock_proxy.should_receive(:add_message_expectation) do |*args, &block|
|
56
|
-
args[1].should == :bar
|
57
|
-
args[2].should == options
|
58
|
-
block.should == block_param
|
59
|
-
end
|
52
|
+
after do
|
53
|
+
foo.bar
|
54
|
+
end
|
60
55
|
|
61
|
-
|
62
|
-
|
56
|
+
it "passes all arguments through to the mock_proxy" do
|
57
|
+
@expectation.message.should == :bar
|
58
|
+
@expectation.implementation.inner_action.should == block_param
|
59
|
+
@expectation.send(:error_generator).opts.should == options
|
60
|
+
end
|
63
61
|
|
64
|
-
|
65
|
-
|
66
|
-
mock_proxy.should_receive(:add_message_expectation) do |*args, &block|
|
67
|
-
args[1].should == :bar
|
68
|
-
end
|
62
|
+
context "when the selector is a string" do
|
63
|
+
let(:selector) { "bar" }
|
69
64
|
|
70
|
-
|
65
|
+
it "converts the selector to a symbol" do
|
66
|
+
@expectation.message.should == selector.to_sym
|
71
67
|
end
|
72
68
|
end
|
69
|
+
end
|
73
70
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
context "when the method is defined" do
|
78
|
-
context "and the method is called" do
|
79
|
-
it 'does not raise an error' do
|
80
|
-
expect {
|
81
|
-
br_mock.assert_with(:bar)
|
82
|
-
foo.bar
|
83
|
-
}.to_not raise_error
|
84
|
-
end
|
85
|
-
end
|
71
|
+
context "on .any_instance" do
|
72
|
+
let(:br_mock) { BetterReceive::Mock.new(Foo.any_instance) }
|
86
73
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
}
|
95
|
-
end
|
74
|
+
context "when the method is defined" do
|
75
|
+
context "and the method is called" do
|
76
|
+
it 'does not raise an error' do
|
77
|
+
expect {
|
78
|
+
br_mock.assert_with(:bar)
|
79
|
+
foo.bar
|
80
|
+
}.to_not raise_error
|
96
81
|
end
|
97
82
|
end
|
98
83
|
|
99
|
-
context '
|
100
|
-
it '
|
84
|
+
context 'and the method is not called' do
|
85
|
+
it 'does raise an error' do
|
101
86
|
expect {
|
102
|
-
br_mock.assert_with(:
|
103
|
-
|
104
|
-
|
87
|
+
br_mock.assert_with(:bar)
|
88
|
+
RSpec::Mocks::space.verify_all
|
89
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
90
|
+
error.message.should == "Exactly one instance should have received the following message(s) but didn't: bar"
|
105
91
|
}
|
106
92
|
end
|
107
93
|
end
|
108
94
|
end
|
95
|
+
|
96
|
+
context 'when the method is not defined' do
|
97
|
+
it 'raises an error' do
|
98
|
+
expect {
|
99
|
+
br_mock.assert_with(:baz)
|
100
|
+
}.to raise_error { |error|
|
101
|
+
error.message.should == "Expected instances of Foo to respond to :baz"
|
102
|
+
}
|
103
|
+
end
|
104
|
+
end
|
109
105
|
end
|
110
106
|
end
|
111
107
|
|
@@ -121,91 +117,77 @@ describe BetterReceive::Mock do
|
|
121
117
|
}
|
122
118
|
end
|
123
119
|
|
124
|
-
|
125
|
-
|
120
|
+
it "returns an rspec message expectation" do
|
121
|
+
br_mock.assert_negative_with(:bar).should be_a RSpec::Mocks::MessageExpectation
|
126
122
|
|
127
|
-
|
128
|
-
foo.
|
129
|
-
|
123
|
+
expect {
|
124
|
+
foo.bar
|
125
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
126
|
+
error.message.should include "received: 1 time"
|
127
|
+
}
|
128
|
+
end
|
130
129
|
|
131
|
-
|
132
|
-
|
130
|
+
it "responds to additional matchers(:with, :once...)" do
|
131
|
+
br_mock.assert_negative_with(:bar).with('wibble')
|
132
|
+
expect {
|
133
|
+
foo.bar('wibble')
|
134
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
135
|
+
error.message.should include "received: 1 time"
|
136
|
+
}
|
137
|
+
end
|
133
138
|
|
134
|
-
|
135
|
-
|
139
|
+
context "passing arguments" do
|
140
|
+
let(:selector) { :bar }
|
141
|
+
let(:options) { {passed: true} }
|
142
|
+
let(:block_param) { Proc.new {} }
|
136
143
|
|
137
|
-
|
138
|
-
|
139
|
-
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
140
|
-
error.message.should include "received: 1 time"
|
141
|
-
}
|
142
|
-
|
143
|
-
br_mock.assert_negative_with(:bar).with('wibble')
|
144
|
-
expect {
|
145
|
-
foo.bar('wibble')
|
146
|
-
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
147
|
-
error.message.should include "received: 1 time"
|
148
|
-
}
|
144
|
+
before do
|
145
|
+
br_mock.assert_negative_with(:bar, options, &block_param)
|
149
146
|
|
147
|
+
@expectation = RSpec::Mocks.proxy_for(foo).send(:method_doubles)[0][:expectations][0]
|
150
148
|
end
|
151
149
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
foo.should_receive(:send).with(:__mock_proxy).and_return(mock_proxy)
|
158
|
-
mock_proxy.should_receive(:add_negative_message_expectation) do |*args, &block|
|
159
|
-
args[1].should == :bar
|
160
|
-
block.should == block_param
|
161
|
-
end
|
150
|
+
it "passes all arguments through to the mock_proxy" do
|
151
|
+
@expectation.message.should == :bar
|
152
|
+
@expectation.implementation.inner_action.should == block_param
|
153
|
+
@expectation.send(:error_generator).opts.should == options
|
154
|
+
end
|
162
155
|
|
163
|
-
|
164
|
-
|
156
|
+
context "when the selector is a string" do
|
157
|
+
let(:selector) { "bar" }
|
165
158
|
|
166
159
|
it "converts the selector to a symbol" do
|
167
|
-
|
168
|
-
mock_proxy.should_receive(:add_negative_message_expectation) do |*args, &block|
|
169
|
-
args[1].should == :bar
|
170
|
-
end
|
171
|
-
|
172
|
-
br_mock.assert_negative_with("bar", &block_param)
|
160
|
+
@expectation.message.should == selector.to_sym
|
173
161
|
end
|
174
162
|
end
|
163
|
+
end
|
175
164
|
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
context "when the method is defined" do
|
180
|
-
context "and the method is called" do
|
181
|
-
it 'raises when called' do
|
182
|
-
expect {
|
183
|
-
br_mock.assert_negative_with(:bar)
|
184
|
-
foo.bar
|
185
|
-
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
186
|
-
error.message.should include "received: 1 time"
|
187
|
-
}
|
188
|
-
end
|
189
|
-
end
|
165
|
+
context "on .any_instance" do
|
166
|
+
let(:br_mock) { BetterReceive::Mock.new(Foo.any_instance) }
|
190
167
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
end
|
168
|
+
it 'raises when called' do
|
169
|
+
expect {
|
170
|
+
br_mock.assert_negative_with(:bar)
|
171
|
+
foo.bar
|
172
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError) { |error|
|
173
|
+
error.message.should include "received: 1 time"
|
174
|
+
}
|
175
|
+
end
|
200
176
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
177
|
+
it 'does not raise an error if not called' do
|
178
|
+
expect {
|
179
|
+
br_mock.assert_negative_with(:bar)
|
180
|
+
RSpec::Mocks::space.verify_all
|
181
|
+
}.to_not raise_error
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'when the method is not defined' do
|
185
|
+
it 'raises an error' do
|
186
|
+
expect {
|
187
|
+
br_mock.assert_negative_with(:baz)
|
188
|
+
}.to raise_error { |error|
|
189
|
+
error.message.should == "Expected instances of Foo to respond to :baz"
|
190
|
+
}
|
209
191
|
end
|
210
192
|
end
|
211
193
|
end
|
@@ -11,67 +11,57 @@ describe BetterReceive::Stub do
|
|
11
11
|
let(:br_stub) { BetterReceive::Stub.new(foo) }
|
12
12
|
|
13
13
|
context "when passed a single selector" do
|
14
|
-
|
15
|
-
|
16
|
-
foo.should_receive(:respond_to?).with(:bar).and_return(true)
|
14
|
+
it "determines whether an object responds to a method" do
|
15
|
+
foo.should_receive(:respond_to?).with(:bar).and_return(true)
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
foo.bar
|
21
|
-
end
|
17
|
+
br_stub.assert_with :bar
|
22
18
|
|
23
|
-
|
24
|
-
expect {
|
25
|
-
br_stub.assert_with :bar_baz
|
26
|
-
}.to raise_error(RSpec::Expectations::ExpectationNotMetError) { |error|
|
27
|
-
error.message.should =~ /to respond to :bar_baz/
|
28
|
-
}
|
29
|
-
end
|
19
|
+
foo.bar
|
30
20
|
end
|
31
21
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
22
|
+
it "raises an error if the method is not defined" do
|
23
|
+
expect {
|
24
|
+
br_stub.assert_with :bar_baz
|
25
|
+
}.to raise_error(RSpec::Expectations::ExpectationNotMetError) { |error|
|
26
|
+
error.message.should =~ /to respond to :bar_baz/
|
27
|
+
}
|
28
|
+
end
|
36
29
|
|
37
|
-
|
38
|
-
|
39
|
-
mock_proxy.should_receive(:add_stub)
|
30
|
+
it "returns an rspec message expectation(responds to additional matchers ('with', 'once'...))" do
|
31
|
+
br_stub.assert_with(:bar).should be_a RSpec::Mocks::MessageExpectation
|
40
32
|
|
41
|
-
|
42
|
-
|
33
|
+
br_stub.assert_with(:bar).with('wibble')
|
34
|
+
end
|
43
35
|
|
44
|
-
|
45
|
-
|
36
|
+
it "returns the value passed in the block" do
|
37
|
+
br_stub.assert_with(:bar) { :baz }
|
46
38
|
|
39
|
+
foo.bar.should == :baz
|
40
|
+
end
|
47
41
|
|
48
|
-
|
49
|
-
|
42
|
+
context "when passing arguments" do
|
43
|
+
let(:selector) { :bar }
|
44
|
+
let(:options) { {passed: true} }
|
45
|
+
let(:block_param) { Proc.new {} }
|
50
46
|
|
51
|
-
|
52
|
-
|
53
|
-
mock_proxy.should_receive(:add_stub) do |*args, &block|
|
54
|
-
args[1].should == :bar
|
55
|
-
args[2].should == options
|
56
|
-
block.should == block_param
|
57
|
-
end
|
47
|
+
before do
|
48
|
+
br_stub.assert_with(:bar, options, &block_param)
|
58
49
|
|
59
|
-
|
50
|
+
@stub = RSpec::Mocks.proxy_for(foo).send(:method_doubles)[0][:stubs][0]
|
60
51
|
end
|
61
52
|
|
62
|
-
it "
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
br_stub.assert_with("bar", passed: true, &block_param)
|
53
|
+
it "creates a mock proxy and adds an expectation to it" do
|
54
|
+
@stub.message.should == :bar
|
55
|
+
@stub.implementation.inner_action.should == block_param
|
56
|
+
@stub.send(:error_generator).opts.should == options
|
69
57
|
end
|
70
58
|
|
71
|
-
|
72
|
-
|
59
|
+
context "when the selector is a string" do
|
60
|
+
let(:selector) { "bar" }
|
73
61
|
|
74
|
-
|
62
|
+
it "converts the selector to a symbol" do
|
63
|
+
@stub.message.should == selector.to_sym
|
64
|
+
end
|
75
65
|
end
|
76
66
|
end
|
77
67
|
end
|
@@ -122,6 +112,10 @@ describe BetterReceive::Stub do
|
|
122
112
|
|
123
113
|
foo.bar.should == :whatever
|
124
114
|
end
|
115
|
+
|
116
|
+
it "does not blow up if the method is not called" do
|
117
|
+
br_stub.assert_with(:bar)
|
118
|
+
end
|
125
119
|
end
|
126
120
|
|
127
121
|
context 'when the method is not defined' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: better_receive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Ellis
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ~>
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '2.
|
20
|
+
version: '2.14'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '2.
|
27
|
+
version: '2.14'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|