trackerific 0.5.5 → 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.
Files changed (49) hide show
  1. data/README.rdoc +62 -44
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/changelog +9 -0
  5. data/lib/trackerific/configuration.rb +2 -2
  6. data/lib/trackerific/details.rb +36 -10
  7. data/lib/trackerific/event.rb +9 -7
  8. data/lib/trackerific/service.rb +22 -6
  9. data/lib/trackerific/services/fedex.rb +11 -7
  10. data/lib/trackerific/services/mock_service.rb +23 -14
  11. data/lib/trackerific/services/ups.rb +12 -8
  12. data/lib/trackerific/services/usps.rb +114 -21
  13. data/spec/fixtures/usps_city_state_lookup_response.xml +8 -0
  14. data/spec/lib/helpers/options_helper_spec.rb +3 -3
  15. data/spec/lib/trackerific/configuration_spec.rb +35 -0
  16. data/spec/lib/trackerific/details_spec.rb +71 -11
  17. data/spec/lib/trackerific/event_spec.rb +34 -19
  18. data/spec/lib/trackerific/service_spec.rb +3 -3
  19. data/spec/lib/trackerific/services/fedex_spec.rb +16 -3
  20. data/spec/lib/trackerific/services/mock_service_spec.rb +19 -4
  21. data/spec/lib/trackerific/services/ups_spec.rb +17 -2
  22. data/spec/lib/trackerific/services/usps_spec.rb +60 -11
  23. data/spec/lib/trackerific_spec.rb +7 -5
  24. data/trackerific.gemspec +5 -27
  25. metadata +8 -30
  26. data/doc/OptionsHelper.html +0 -287
  27. data/doc/Trackerific/Configuration.html +0 -354
  28. data/doc/Trackerific/Details.html +0 -565
  29. data/doc/Trackerific/Error.html +0 -127
  30. data/doc/Trackerific/Event.html +0 -639
  31. data/doc/Trackerific/FedEx.html +0 -558
  32. data/doc/Trackerific/Service.html +0 -579
  33. data/doc/Trackerific/UPS.html +0 -532
  34. data/doc/Trackerific/USPS.html +0 -568
  35. data/doc/Trackerific.html +0 -833
  36. data/doc/_index.html +0 -226
  37. data/doc/class_list.html +0 -47
  38. data/doc/css/common.css +0 -1
  39. data/doc/css/full_list.css +0 -53
  40. data/doc/css/style.css +0 -320
  41. data/doc/file.README.html +0 -288
  42. data/doc/file_list.html +0 -49
  43. data/doc/frames.html +0 -13
  44. data/doc/index.html +0 -288
  45. data/doc/js/app.js +0 -205
  46. data/doc/js/full_list.js +0 -150
  47. data/doc/js/jquery.js +0 -16
  48. data/doc/method_list.html +0 -294
  49. data/doc/top-level-namespace.html +0 -103
@@ -5,7 +5,7 @@ describe OptionsHelper do
5
5
 
6
6
  describe :validate_options do
7
7
 
8
- context "with all required options" do
8
+ context "with all required parameters" do
9
9
  before do
10
10
  @required = [:hello, :world]
11
11
  @options = {:hello => true, :world => true}
@@ -14,7 +14,7 @@ describe OptionsHelper do
14
14
  it { should be true }
15
15
  end
16
16
 
17
- context "with missing required options" do
17
+ context "with missing required parameters" do
18
18
  before do
19
19
  @required = [:hello, :world]
20
20
  @options = {:hello => true}
@@ -22,7 +22,7 @@ describe OptionsHelper do
22
22
  specify { lambda { validate_options(@options, @required) }.should raise_error(ArgumentError) }
23
23
  end
24
24
 
25
- context "with no required options" do
25
+ context "with no required parameters" do
26
26
  before do
27
27
  @required = []
28
28
  @options = {}
@@ -6,4 +6,39 @@ describe "Trackerific.configuration" do
6
6
  subject { Trackerific.configuration }
7
7
  it { should be_a Trackerific::Configuration }
8
8
 
9
+ context "with valid options" do
10
+ it "should not raise any errors" do
11
+ lambda {
12
+ Trackerific.configure do |config|
13
+ config.usps :user_id => 'userid'
14
+ end
15
+ }.should_not raise_error
16
+ end
17
+ it "should save a valid option" do
18
+ Trackerific.configure do |config|
19
+ config.usps :user_id => 'userid'
20
+ end
21
+ Trackerific.configuration.usps[:user_id].should eq 'userid'
22
+ end
23
+ end
24
+
25
+ context "with invalid options" do
26
+ it "should raise ArgumentError" do
27
+ lambda {
28
+ Trackerific.configure do |config|
29
+ config.usps :invalid => 'option'
30
+ end
31
+ }.should raise_error ArgumentError
32
+ end
33
+ end
34
+
35
+ context "with invalid configuration group - not a Trackerific:Service" do
36
+ it "should raise NoMethodError" do
37
+ lambda {
38
+ Trackerific.configure do |config|
39
+ config.qwertyuiop :invalid => 'group'
40
+ end
41
+ }.should raise_error(NoMethodError)
42
+ end
43
+ end
9
44
  end
@@ -1,22 +1,82 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Trackerific::Details do
4
-
5
- before { @details = Trackerific::Details.new(String.new, String.new, Array.new) }
6
4
 
7
- describe :events do
8
- subject { @details.events }
9
- it { should be_a Array }
5
+ before do
6
+ @required_details = {
7
+ :package_id => String.new,
8
+ :summary => String.new,
9
+ :events => Array.new
10
+ }
11
+ @valid_options = {
12
+ :weight => Hash.new,
13
+ :via => String.new
14
+ }
15
+ end
16
+
17
+ context "with required options only" do
18
+ before { @details = Trackerific::Details.new(@required_details) }
19
+
20
+ describe :events do
21
+ subject { @details.events }
22
+ it { should be_a Array }
23
+ end
24
+
25
+ describe :package_id do
26
+ subject { @details.package_id }
27
+ it { should be_a String }
28
+ end
29
+
30
+ describe :summary do
31
+ subject { @details.summary }
32
+ it { should be_a String }
33
+ end
34
+
35
+ describe :weight do
36
+ subject { @details.weight }
37
+ it { should be_nil }
38
+ end
39
+
40
+ describe :via do
41
+ subject { @details.via }
42
+ it { should be_nil }
43
+ end
10
44
  end
11
45
 
12
- describe :package_id do
13
- subject { @details.package_id }
14
- it { should be_a String }
46
+ context "with all options" do
47
+ before { @details = Trackerific::Details.new(@required_details.merge(@valid_options)) }
48
+
49
+ describe :events do
50
+ subject { @details.events }
51
+ it { should be_a Array }
52
+ end
53
+
54
+ describe :package_id do
55
+ subject { @details.package_id }
56
+ it { should be_a String }
57
+ end
58
+
59
+ describe :summary do
60
+ subject { @details.summary }
61
+ it { should be_a String }
62
+ end
63
+
64
+ describe :weight do
65
+ subject { @details.weight }
66
+ it { should be_a Hash }
67
+ end
68
+
69
+ describe :via do
70
+ subject { @details.via }
71
+ it { should be_a String }
72
+ end
15
73
  end
16
74
 
17
- describe :summary do
18
- subject { @details.summary }
19
- it { should be_a String }
75
+ context "with no options" do
76
+ specify { lambda { Trackerific::Details.new }.should raise_error(ArgumentError) }
20
77
  end
21
78
 
79
+ context "with invalid options" do
80
+ specify { lambda { Trackerific::Details.new(:hello => "world")}.should raise_error(ArgumentError) }
81
+ end
22
82
  end
@@ -4,30 +4,45 @@ describe Trackerific::Event do
4
4
 
5
5
  before do
6
6
  @date = Time.now
7
- @description = "description"
8
- @location = "location"
9
- @event = Trackerific::Event.new(@date, @description, @location)
7
+ @description = 'description'
8
+ @location = 'location'
9
+ @required_parameters = {
10
+ :date => @date,
11
+ :description => @description,
12
+ :location => @location
13
+ }
10
14
  end
11
15
 
12
- describe :date do
13
- subject { @event.date }
14
- it { should be @date }
16
+ context "with all required options" do
17
+ before { @event = Trackerific::Event.new(@required_parameters) }
18
+
19
+ describe :date do
20
+ subject { @event.date }
21
+ it { should be @date }
22
+ end
23
+
24
+ describe :description do
25
+ subject { @event.description }
26
+ it { should be @description }
27
+ end
28
+
29
+ describe :location do
30
+ subject { @event.location }
31
+ it { should be @location }
32
+ end
33
+
34
+ describe :to_s do
35
+ before { @regex = /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (0[1-9]|[1-2][0-9]|3[01]) \d{2}:\d{2} (am|pm).*/ }
36
+ subject { @event.to_s }
37
+ it("should be in format mmm dd hh:mm am/pm.*") { should =~ @regex }
38
+ end
15
39
  end
16
40
 
17
- describe :description do
18
- subject { @event.description }
19
- it { should be @description }
41
+ context "missing some options" do
42
+ specify { lambda { Trackerific::Event.new(:date => Time.now, :description => '') }.should raise_error(ArgumentError) }
20
43
  end
21
44
 
22
- describe :location do
23
- subject { @event.location }
24
- it { should be @location }
45
+ context "with invalid options" do
46
+ specify { lambda { Trackerific::Event.new(:hello => "world") }.should raise_error(ArgumentError) }
25
47
  end
26
-
27
- describe :to_s do
28
- before { @regex = /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (0[1-9]|[1-2][0-9]|3[01]) \d{2}:\d{2} (am|pm).*/ }
29
- subject { @event.to_s }
30
- it("should be in format mmm dd hh:mm am/pm.*") { should =~ @regex }
31
- end
32
-
33
48
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  class TestServiceClass < Trackerific::Service
4
4
  class << self
5
- def required_options
5
+ def required_parameters
6
6
  [:required, :also_required]
7
7
  end
8
8
  end
@@ -10,8 +10,8 @@ end
10
10
 
11
11
  describe Trackerific::Service do
12
12
 
13
- describe :required_options do
14
- specify { Trackerific::Service.required_options.should be_kind_of Array }
13
+ describe :required_parameters do
14
+ specify { Trackerific::Service.required_parameters.should be_kind_of Array }
15
15
  end
16
16
 
17
17
  describe :service_name do
@@ -3,15 +3,28 @@ require 'fakeweb'
3
3
 
4
4
  FEDEX_TRACK_URL = "https://gateway.fedex.com/GatewayDC"
5
5
 
6
- describe "Trackerific::FedEx" do
6
+ describe Trackerific::FedEx do
7
7
  include Fixtures
8
8
 
9
- describe :required_options do
10
- subject { Trackerific::FedEx.required_options }
9
+ specify("it should descend from Trackerific::Service") {
10
+ Trackerific::FedEx.superclass.should be Trackerific::Service
11
+ }
12
+
13
+ describe :required_parameters do
14
+ subject { Trackerific::FedEx.required_parameters }
11
15
  it { should include(:account) }
12
16
  it { should include(:meter) }
13
17
  end
14
18
 
19
+ describe :valid_options do
20
+ it "should include required_parameters" do
21
+ valid = Trackerific::FedEx.valid_options
22
+ Trackerific::FedEx.required_parameters.each do |opt|
23
+ valid.should include opt
24
+ end
25
+ end
26
+ end
27
+
15
28
  describe :package_id_matchers do
16
29
  subject { Trackerific::FedEx.package_id_matchers }
17
30
  it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
@@ -1,14 +1,29 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Trackerific::MockService do
4
- describe :required_options do
5
- subject { Trackerific::MockService.required_options }
4
+
5
+ specify("it should descend from Trackerific::Service") {
6
+ Trackerific::MockService.superclass.should be Trackerific::Service
7
+ }
8
+
9
+ describe :required_parameters do
10
+ subject { Trackerific::MockService.required_parameters }
6
11
  it { should be_empty }
7
12
  end
8
13
 
9
14
  describe :package_id_matchers do
10
- subject { Trackerific::MockService.package_id_matchers }
11
- it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
15
+
16
+ context "when in development or test mode" do
17
+ subject { Trackerific::MockService.package_id_matchers }
18
+ it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
19
+ end
20
+
21
+ context "when in production mode" do
22
+ before { Rails.env = "production" }
23
+ subject { Trackerific::MockService.package_id_matchers }
24
+ it { should be_empty }
25
+ after { Rails.env = "test"}
26
+ end
12
27
  end
13
28
 
14
29
  describe :track_package do
@@ -6,13 +6,26 @@ UPS_TRACK_URL = 'https://wwwcie.ups.com/ups.app/xml/Track'
6
6
  describe "Trackerific::UPS" do
7
7
  include Fixtures
8
8
 
9
- describe :required_options do
10
- subject { Trackerific::UPS.required_options }
9
+ specify("it should descend from Trackerific::Service") {
10
+ Trackerific::UPS.superclass.should be Trackerific::Service
11
+ }
12
+
13
+ describe :required_parameters do
14
+ subject { Trackerific::UPS.required_parameters }
11
15
  it { should include(:key) }
12
16
  it { should include(:user_id) }
13
17
  it { should include(:password) }
14
18
  end
15
19
 
20
+ describe :valid_options do
21
+ it "should include required_parameters" do
22
+ valid = Trackerific::UPS.valid_options
23
+ Trackerific::UPS.required_parameters.each do |opt|
24
+ valid.should include opt
25
+ end
26
+ end
27
+ end
28
+
16
29
  describe :package_id_matchers do
17
30
  subject { Trackerific::UPS.package_id_matchers }
18
31
  it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
@@ -59,6 +72,8 @@ describe "Trackerific::UPS" do
59
72
 
60
73
  end
61
74
 
75
+ pending "when server returns corrupted xml"
76
+
62
77
  end
63
78
 
64
79
  end
@@ -1,19 +1,47 @@
1
1
  require 'spec_helper'
2
2
  require 'fakeweb'
3
3
 
4
- USPS_TRACK_URL = %r|http://testing\.shippingapis\.com/.*|
4
+ USPS_URL = %r|http://testing\.shippingapis\.com/.*|
5
5
 
6
6
  describe Trackerific::USPS do
7
7
  include Fixtures
8
8
 
9
- describe :required_options do
10
- subject { Trackerific::USPS.required_options }
11
- it { should include(:user_id) }
12
- end
9
+ specify("it should descend from Trackerific::Service") {
10
+ Trackerific::USPS.superclass.should be Trackerific::Service
11
+ }
13
12
 
14
- describe :package_id_matchers do
15
- subject { Trackerific::UPS.package_id_matchers }
16
- it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
13
+ describe :city_state_lookup do
14
+
15
+ before(:all) do
16
+ @usps = Trackerific::USPS.new :user_id => '123USERID4567'
17
+ end
18
+
19
+ context "with a successful response from the server" do
20
+
21
+ before(:all) do
22
+ FakeWeb.register_uri(:get, USPS_URL, :body => load_fixture(:usps_city_state_lookup_response))
23
+ end
24
+
25
+ before(:each) do
26
+ @lookup = @usps.city_state_lookup("90210")
27
+ end
28
+
29
+ subject { @lookup }
30
+ it { should include(:city) }
31
+ it { should include(:state) }
32
+ it { should include(:zip) }
33
+
34
+ end
35
+
36
+ context "with an error response from the server" do
37
+
38
+ before(:all) do
39
+ FakeWeb.register_uri(:get, USPS_URL, :body => load_fixture(:usps_error_response))
40
+ end
41
+
42
+ specify { lambda { @usps.city_state_lookup("90210") }.should raise_error(Trackerific::Error) }
43
+
44
+ end
17
45
  end
18
46
 
19
47
  describe :track_package do
@@ -26,7 +54,7 @@ describe Trackerific::USPS do
26
54
  context "with a successful response from the server" do
27
55
 
28
56
  before(:all) do
29
- FakeWeb.register_uri(:get, USPS_TRACK_URL, :body => load_fixture(:usps_success_response))
57
+ FakeWeb.register_uri(:get, USPS_URL, :body => load_fixture(:usps_success_response))
30
58
  end
31
59
 
32
60
  before(:each) do
@@ -48,15 +76,36 @@ describe Trackerific::USPS do
48
76
 
49
77
  end
50
78
 
79
+ pending "when use_city_state_lookup == true"
80
+
51
81
  context "with an error response from the server" do
52
82
 
53
83
  before(:all) do
54
- FakeWeb.register_uri(:get, USPS_TRACK_URL, :body => load_fixture(:usps_error_response))
84
+ FakeWeb.register_uri(:get, USPS_URL, :body => load_fixture(:usps_error_response))
55
85
  end
56
86
 
57
87
  specify { lambda { @usps.track_package(@package_id) }.should raise_error(Trackerific::Error) }
58
88
 
59
89
  end
60
90
  end
61
-
91
+
92
+ describe :required_parameters do
93
+ subject { Trackerific::USPS.required_parameters }
94
+ it { should include(:user_id) }
95
+ end
96
+
97
+ describe :valid_options do
98
+ it "should include required_parameters" do
99
+ valid = Trackerific::USPS.valid_options
100
+ Trackerific::USPS.required_parameters.each do |opt|
101
+ valid.should include opt
102
+ end
103
+ end
104
+ end
105
+
106
+ describe :package_id_matchers do
107
+ subject { Trackerific::UPS.package_id_matchers }
108
+ it("should be an Array of Regexp") { should each { |m| m.should be_a Regexp } }
109
+ end
110
+
62
111
  end
@@ -48,13 +48,15 @@ describe Trackerific do
48
48
 
49
49
  describe :track_package do
50
50
 
51
- before do
52
- @details = track_package "XXXXXXXXXX"
51
+ context "with a valid package id" do
52
+ before { @details = track_package "XXXXXXXXXX" }
53
+ subject { @details }
54
+ it { should be_kind_of Trackerific::Details }
53
55
  end
54
56
 
55
- subject { @details }
56
-
57
- it { should be_kind_of Trackerific::Details }
57
+ context "with an invalid package id" do
58
+ specify { lambda { track_package "XXXxxxxxxx" }.should raise_error(Trackerific::Error) }
59
+ end
58
60
  end
59
61
 
60
62
  end
data/trackerific.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{trackerific}
8
- s.version = "0.5.5"
8
+ s.version = "0.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Travis Haynes"]
12
- s.date = %q{2011-06-24}
13
- s.description = %q{Trackerific provides USPS, FedEx and UPS package tracking to Rails.}
12
+ s.date = %q{2011-06-27}
13
+ s.description = %q{Package tracking made easy for Rails. Currently supported services include FedEx, UPS, and USPS.}
14
14
  s.email = %q{travis.j.haynes@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -24,30 +24,7 @@ Gem::Specification.new do |s|
24
24
  "README.rdoc",
25
25
  "Rakefile",
26
26
  "VERSION",
27
- "doc/OptionsHelper.html",
28
- "doc/Trackerific.html",
29
- "doc/Trackerific/Configuration.html",
30
- "doc/Trackerific/Details.html",
31
- "doc/Trackerific/Error.html",
32
- "doc/Trackerific/Event.html",
33
- "doc/Trackerific/FedEx.html",
34
- "doc/Trackerific/Service.html",
35
- "doc/Trackerific/UPS.html",
36
- "doc/Trackerific/USPS.html",
37
- "doc/_index.html",
38
- "doc/class_list.html",
39
- "doc/css/common.css",
40
- "doc/css/full_list.css",
41
- "doc/css/style.css",
42
- "doc/file.README.html",
43
- "doc/file_list.html",
44
- "doc/frames.html",
45
- "doc/index.html",
46
- "doc/js/app.js",
47
- "doc/js/full_list.js",
48
- "doc/js/jquery.js",
49
- "doc/method_list.html",
50
- "doc/top-level-namespace.html",
27
+ "changelog",
51
28
  "lib/helpers/options_helper.rb",
52
29
  "lib/trackerific.rb",
53
30
  "lib/trackerific/configuration.rb",
@@ -63,6 +40,7 @@ Gem::Specification.new do |s|
63
40
  "spec/fixtures/fedex_success_response.xml",
64
41
  "spec/fixtures/ups_error_response.xml",
65
42
  "spec/fixtures/ups_success_response.xml",
43
+ "spec/fixtures/usps_city_state_lookup_response.xml",
66
44
  "spec/fixtures/usps_error_response.xml",
67
45
  "spec/fixtures/usps_success_response.xml",
68
46
  "spec/lib/helpers/options_helper_spec.rb",
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 5
8
- - 5
9
- version: 0.5.5
7
+ - 6
8
+ - 0
9
+ version: 0.6.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Travis Haynes
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-06-24 00:00:00 -07:00
17
+ date: 2011-06-27 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -152,7 +152,7 @@ dependencies:
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: *id009
155
- description: Trackerific provides USPS, FedEx and UPS package tracking to Rails.
155
+ description: Package tracking made easy for Rails. Currently supported services include FedEx, UPS, and USPS.
156
156
  email: travis.j.haynes@gmail.com
157
157
  executables: []
158
158
 
@@ -169,30 +169,7 @@ files:
169
169
  - README.rdoc
170
170
  - Rakefile
171
171
  - VERSION
172
- - doc/OptionsHelper.html
173
- - doc/Trackerific.html
174
- - doc/Trackerific/Configuration.html
175
- - doc/Trackerific/Details.html
176
- - doc/Trackerific/Error.html
177
- - doc/Trackerific/Event.html
178
- - doc/Trackerific/FedEx.html
179
- - doc/Trackerific/Service.html
180
- - doc/Trackerific/UPS.html
181
- - doc/Trackerific/USPS.html
182
- - doc/_index.html
183
- - doc/class_list.html
184
- - doc/css/common.css
185
- - doc/css/full_list.css
186
- - doc/css/style.css
187
- - doc/file.README.html
188
- - doc/file_list.html
189
- - doc/frames.html
190
- - doc/index.html
191
- - doc/js/app.js
192
- - doc/js/full_list.js
193
- - doc/js/jquery.js
194
- - doc/method_list.html
195
- - doc/top-level-namespace.html
172
+ - changelog
196
173
  - lib/helpers/options_helper.rb
197
174
  - lib/trackerific.rb
198
175
  - lib/trackerific/configuration.rb
@@ -208,6 +185,7 @@ files:
208
185
  - spec/fixtures/fedex_success_response.xml
209
186
  - spec/fixtures/ups_error_response.xml
210
187
  - spec/fixtures/ups_success_response.xml
188
+ - spec/fixtures/usps_city_state_lookup_response.xml
211
189
  - spec/fixtures/usps_error_response.xml
212
190
  - spec/fixtures/usps_success_response.xml
213
191
  - spec/lib/helpers/options_helper_spec.rb
@@ -239,7 +217,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
217
  requirements:
240
218
  - - ">="
241
219
  - !ruby/object:Gem::Version
242
- hash: -2587276828587916767
220
+ hash: -4113113106742539098
243
221
  segments:
244
222
  - 0
245
223
  version: "0"