optimizely 1.2.1 → 1.2.2

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
  SHA1:
3
- metadata.gz: f9e48555c06465e2d96afa5d32ffef4ce2f3f153
4
- data.tar.gz: 291e3967815cddb539da8ba5ff298b81c6398e9d
3
+ metadata.gz: 16e4c9c9f52348b79e7fcad30925d0b718658925
4
+ data.tar.gz: 4a8b4e33663afe5bdc4f627ab040d78e08579e23
5
5
  SHA512:
6
- metadata.gz: 6cb3586e8fd419984b65956423a7581c554436e9dd26517fad5b2e7e9b16e4fd9a8d04accc024995d1a6fa0d8defcda029d07a8a26416836647de7a10c78c9b2
7
- data.tar.gz: 35c1ff56dfd0c1505eed79f9debbd8b8325863ec409657b5e575a9849d4b7e0b22f6168e28ac056c90b28c59becad98b187deae08f0d7e52323ec25b8a37c282
6
+ metadata.gz: 2d9d10c4893688e1cb96fd4542e6892b510f8fda1d13e562642bba5144d8d8c0707126a8dbfdea4dc3690c47b5cfd6ed6b803a3fc270f6c0ea2119e7a36edc55
7
+ data.tar.gz: d7c300fe8d53ddb225dd9bb28eb68d7446db43c8847fb4a63cea86c8bf21a10f797965060811b9682c3c2e8fc6c57a56b09bb22ac5b7ea0add33a11314937b9f
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
- .DS_Store
1
+ .DS_Store
2
+ *.swp
data/Gemfile CHANGED
@@ -1,4 +1,2 @@
1
- source "http://www.rubygems.org"
1
+ source 'http://www.rubygems.org'
2
2
  gemspec
3
- gem "bundler"
4
- gem "json" # 1.8.1
data/Gemfile.lock CHANGED
@@ -2,18 +2,33 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  optimizely (1.2.1)
5
+ json (~> 1.8.3)
5
6
 
6
7
  GEM
7
8
  remote: http://www.rubygems.org/
8
9
  specs:
9
- json (1.8.1)
10
- rake (10.3.1)
10
+ coderay (1.1.0)
11
+ json (1.8.3)
12
+ method_source (0.8.2)
13
+ power_assert (0.2.4)
14
+ pry (0.10.1)
15
+ coderay (~> 1.1.0)
16
+ method_source (~> 0.8.1)
17
+ slop (~> 3.4)
18
+ rake (10.4.2)
19
+ slop (3.6.0)
20
+ test-unit (3.1.2)
21
+ power_assert
11
22
 
12
23
  PLATFORMS
13
24
  ruby
14
25
 
15
26
  DEPENDENCIES
16
- bundler
17
- json
27
+ bundler (~> 1.10.6)
18
28
  optimizely!
19
- rake
29
+ pry (~> 0.10.1)
30
+ rake (~> 10.4.2)
31
+ test-unit (~> 3.1.2)
32
+
33
+ BUNDLED WITH
34
+ 1.10.6
@@ -1,24 +1,24 @@
1
1
  module Optimizely
2
- class Engine
3
-
4
- BASE_URL = "https://www.optimizelyapis.com/experiment/v1/"
5
-
6
- attr_accessor :url
7
-
8
- # Initialize Optimizely using an API token.
9
- #
10
- # == Options:
11
- # +:api_token+:: Use an API token you received before.
12
- # +:timeout+:: Set Net:HTTP timeout in seconds (default is 300).
13
- #
14
- def initialize(options={})
15
- @options = options
16
- check_init_auth_requirements
17
- end
18
-
19
- # Initalize the Token so it can be used in every request we'll do later on.
20
- # Besides that also set the authentication header.
21
- def token=(token)
2
+ class Engine
3
+
4
+ BASE_URL = "https://www.optimizelyapis.com/experiment/v1/"
5
+
6
+ attr_accessor :url
7
+
8
+ # Initialize Optimizely using an API token.
9
+ #
10
+ # == Options:
11
+ # +:api_token+:: Use an API token you received before.
12
+ # +:timeout+:: Set Net:HTTP timeout in seconds (default is 300).
13
+ #
14
+ def initialize(options={})
15
+ @options = options
16
+ check_init_auth_requirements
17
+ end
18
+
19
+ # Initalize the Token so it can be used in every request we'll do later on.
20
+ # Besides that also set the authentication header.
21
+ def token=(token)
22
22
  @token = token
23
23
  set_headers
24
24
  end
@@ -29,13 +29,13 @@ module Optimizely
29
29
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
30
30
  # projects = optimizely.projects # Look up all projects.
31
31
  #
32
- def projects
33
- if @projects.nil?
34
- response = self.get("projects")
35
- @projects = response.collect { |project_json| Project.new(project_json) }
36
- end
37
- @projects
38
- end
32
+ def projects
33
+ if @projects.nil?
34
+ response = self.get("projects")
35
+ @projects = response.collect { |project_json| Project.new(project_json) }
36
+ end
37
+ @projects
38
+ end
39
39
 
40
40
  # Returns the details for a specific project.
41
41
  #
@@ -43,16 +43,13 @@ module Optimizely
43
43
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
44
44
  # project = optimizely.project(12345) # Look up the project.
45
45
  #
46
- def project(id)
47
- @url = "projects/#{id}"
48
- raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve the project." if id.nil?
46
+ def project(id)
47
+ @url = "projects/#{id}"
48
+ raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve the project." if id.nil?
49
49
 
50
- if @project.nil?
51
- response = self.get(@url)
52
- @project = Project.new(response)
53
- end
54
- @project
55
- end
50
+ response = self.get(@url)
51
+ Project.new(response)
52
+ end
56
53
 
57
54
  # Returns the list of experiments for a specified project.
58
55
  #
@@ -60,15 +57,12 @@ module Optimizely
60
57
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
61
58
  # experiments = optimizely.experiments(12345) # Look up all experiments for a project.
62
59
  #
63
- def experiments(project_id)
64
- raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve experiments." if project_id.nil?
60
+ def experiments(project_id)
61
+ raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve experiments." if project_id.nil?
65
62
 
66
- if @experiments.nil?
67
- response = self.get("projects/#{project_id}/experiments")
68
- @experiments = response.collect { |response_json| Experiment.new(response_json) }
69
- end
70
- @experiments
71
- end
63
+ response = self.get("projects/#{project_id}/experiments")
64
+ response.collect { |response_json| Experiment.new(response_json) }
65
+ end
72
66
 
73
67
  # Returns the details for a specific experiment.
74
68
  #
@@ -76,16 +70,13 @@ module Optimizely
76
70
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
77
71
  # experiment = optimizely.experiment(12345) # Look up the experiment.
78
72
  #
79
- def experiment(id)
80
- @url = "experiments/#{id}"
81
- raise OptimizelyError::NoExperimentID, "An Experiment ID is required to retrieve the experiment." if id.nil?
73
+ def experiment(id)
74
+ @url = "experiments/#{id}"
75
+ raise OptimizelyError::NoExperimentID, "An Experiment ID is required to retrieve the experiment." if id.nil?
82
76
 
83
- if @experiment.nil?
84
- response = self.get(@url)
85
- @experiment = Experiment.new(response)
86
- end
87
- @experiment
88
- end
77
+ response = self.get(@url)
78
+ Experiment.new(response)
79
+ end
89
80
 
90
81
  # Returns the list of variations for a specified experiment.
91
82
  #
@@ -93,15 +84,12 @@ module Optimizely
93
84
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
94
85
  # variations = optimizely.variations(12345) # Look up all variations for an experiment.
95
86
  #
96
- def variations(experiment_id)
97
- raise OptimizelyError::NoExperimentID, "An Experiment ID is required to retrieve variations." if experiment_id.nil?
87
+ def variations(experiment_id)
88
+ raise OptimizelyError::NoExperimentID, "An Experiment ID is required to retrieve variations." if experiment_id.nil?
98
89
 
99
- if @variations.nil?
100
- response = self.get("projects/#{experiment_id}/variations")
101
- @variations = response.collect { |variation_json| Variation.new(variation_json) }
102
- end
103
- @variations
104
- end
90
+ response = self.get("experiments/#{experiment_id}/variations")
91
+ response.collect { |variation_json| Variation.new(variation_json) }
92
+ end
105
93
 
106
94
  # Returns the details for a specific variation.
107
95
  #
@@ -109,16 +97,13 @@ module Optimizely
109
97
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
110
98
  # variation = optimizely.variation(12345) # Look up the variation.
111
99
  #
112
- def variation(id)
113
- @url = "variations/#{id}"
114
- raise OptimizelyError::NoVariationID, "A Variation ID is required to retrieve the variation." if id.nil?
100
+ def variation(id)
101
+ @url = "variations/#{id}"
102
+ raise OptimizelyError::NoVariationID, "A Variation ID is required to retrieve the variation." if id.nil?
115
103
 
116
- if @variation.nil?
117
- response = self.get(@url)
118
- @variation = Variation.new(response)
119
- end
120
- @variation
121
- end
104
+ response = self.get(@url)
105
+ Variation.new(response)
106
+ end
122
107
 
123
108
  # Returns the list of audiences for a specified project.
124
109
  #
@@ -126,15 +111,12 @@ module Optimizely
126
111
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
127
112
  # audiences = optimizely.audiences(12345) # Look up all audiences for a project.
128
113
  #
129
- def audiences(project_id)
130
- raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve audiences." if project_id.nil?
114
+ def audiences(project_id)
115
+ raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve audiences." if project_id.nil?
131
116
 
132
- if @audiences.nil?
133
- response = self.get("projects/#{project_id}/audiences")
134
- @audiences = response.collect { |audience_json| Audience.new(audience_json) }
135
- end
136
- @audiences
137
- end
117
+ response = self.get("projects/#{project_id}/audiences")
118
+ response.collect { |audience_json| Audience.new(audience_json) }
119
+ end
138
120
 
139
121
  # Returns the details for a specific audience.
140
122
  #
@@ -142,78 +124,75 @@ module Optimizely
142
124
  # optimizely = Optimizely.new({ api_token: 'oauth2_token' })
143
125
  # audience = optimizely.audience(12345) # Look up the audience.
144
126
  #
145
- def audience(id)
146
- @url = "audiences/#{id}"
147
- raise OptimizelyError::NoAudienceID, "An Audience ID is required to retrieve the audience." if id.nil?
148
-
149
- if @audience.nil?
150
- response = self.get(@url)
151
- @audience = Audience.new(response)
152
- end
153
- @audience
154
- end
155
-
156
- # Return the parsed JSON data for a request that is done to the Optimizely REST API.
157
- def get(url)
158
- uri = URI.parse("#{BASE_URL}#{url}/")
159
- https = Net::HTTP.new(uri.host, uri.port)
160
- https.read_timeout = @options[:timeout] if @options[:timeout]
161
- https.verify_mode = OpenSSL::SSL::VERIFY_NONE
162
- https.use_ssl = true
163
- request = Net::HTTP::Get.new(uri.request_uri, @headers)
164
- response = https.request(request)
165
-
166
- # Response code error checking
127
+ def audience(id)
128
+ @url = "audiences/#{id}"
129
+ raise OptimizelyError::NoAudienceID, "An Audience ID is required to retrieve the audience." if id.nil?
130
+
131
+ response = self.get(@url)
132
+ Audience.new(response)
133
+ end
134
+
135
+ # Return the parsed JSON data for a request that is done to the Optimizely REST API.
136
+ def get(url)
137
+ uri = URI.parse("#{BASE_URL}#{url}/")
138
+ https = Net::HTTP.new(uri.host, uri.port)
139
+ https.read_timeout = @options[:timeout] if @options[:timeout]
140
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
141
+ https.use_ssl = true
142
+ request = Net::HTTP::Get.new(uri.request_uri, @headers)
143
+ response = https.request(request)
144
+
145
+ # Response code error checking
167
146
  if response.code != '200'
168
147
  check_response(response.code, response.body)
169
148
  else
170
- parse_json(response.body)
171
- end
172
- end
173
-
174
- def post
175
- uri = URI.parse("#{BASE_URL}#{url}/")
176
- https = Net::HTTP.new(uri.host, uri.port)
177
- https.read_timeout = @options[:timeout] if @options[:timeout]
178
- https.verify_mode = OpenSSL::SSL::VERIFY_NONE
179
- https.use_ssl = true
180
- request = Net::HTTP::Post.new(uri.request_uri, @headers)
181
- response = https.request(request)
182
-
183
- # Response code error checking
149
+ parse_json(response.body)
150
+ end
151
+ end
152
+
153
+ def post
154
+ uri = URI.parse("#{BASE_URL}#{url}/")
155
+ https = Net::HTTP.new(uri.host, uri.port)
156
+ https.read_timeout = @options[:timeout] if @options[:timeout]
157
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
158
+ https.use_ssl = true
159
+ request = Net::HTTP::Post.new(uri.request_uri, @headers)
160
+ response = https.request(request)
161
+
162
+ # Response code error checking
184
163
  check_response(response.code, response.body) if response.code != '201'
185
- end
186
-
187
- def put
188
- uri = URI.parse("#{BASE_URL}#{url}/")
189
- https = Net::HTTP.new(uri.host, uri.port)
190
- https.read_timeout = @options[:timeout] if @options[:timeout]
191
- https.verify_mode = OpenSSL::SSL::VERIFY_NONE
192
- https.use_ssl = true
193
- request = Net::HTTP::Put.new(uri.request_uri, @headers)
194
- response = https.request(request)
195
-
196
- # Response code error checking
164
+ end
165
+
166
+ def put
167
+ uri = URI.parse("#{BASE_URL}#{url}/")
168
+ https = Net::HTTP.new(uri.host, uri.port)
169
+ https.read_timeout = @options[:timeout] if @options[:timeout]
170
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
171
+ https.use_ssl = true
172
+ request = Net::HTTP::Put.new(uri.request_uri, @headers)
173
+ response = https.request(request)
174
+
175
+ # Response code error checking
197
176
  check_response(response.code, response.body) if response.code != '202'
198
- end
177
+ end
199
178
 
200
- def delete
201
- raise OptimizelyError::NoId, "An ID is required to delete data." if @url.nil?
179
+ def delete
180
+ raise OptimizelyError::NoId, "An ID is required to delete data." if @url.nil?
202
181
 
203
- uri = URI.parse("#{BASE_URL}#{@url}")
204
- https = Net::HTTP.new(uri.host, uri.port)
205
- https.read_timeout = @options[:timeout] if @options[:timeout]
206
- https.verify_mode = OpenSSL::SSL::VERIFY_NONE
207
- https.use_ssl = true
208
- request = Net::HTTP::Delete.new(uri.request_uri, @headers)
209
- response = https.request(request)
182
+ uri = URI.parse("#{BASE_URL}#{@url}")
183
+ https = Net::HTTP.new(uri.host, uri.port)
184
+ https.read_timeout = @options[:timeout] if @options[:timeout]
185
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
186
+ https.use_ssl = true
187
+ request = Net::HTTP::Delete.new(uri.request_uri, @headers)
188
+ response = https.request(request)
210
189
 
211
- # Response code error checking
190
+ # Response code error checking
212
191
  check_response(response.code, response.body) if response.code != '204'
213
- end
192
+ end
214
193
 
215
- def check_response(code, body)
216
- case code
194
+ def check_response(code, body)
195
+ case code
217
196
  when '400'
218
197
  raise OptimizelyError::BadRequest, body + "Your request was not sent in valid JSON. (status code: #{code})."
219
198
  when '401'
@@ -221,37 +200,37 @@ module Optimizely
221
200
  when '403'
222
201
  raise OptimizelyError::Forbidden, body + "You provided an API token but it was invalid or revoked, or if you don't have read/ write access to the entity you're trying to view/edit (status code: #{code})."
223
202
  when '404'
224
- raise OptimizelyError::NotFound, body + "The id used in the request was inaccurate or you didn't have permission to view/edit it (status code: #{code})."
203
+ raise OptimizelyError::NotFound, body + "The id used in the request was inaccurate or you didn't have permission to view/edit it (status code: #{code})."
225
204
  else
226
205
  raise OptimizelyError::UnknownError, body + " (status code: #{code})."
227
206
  end
228
- end
229
-
230
-
231
- private
232
-
233
-
234
- # If there is no API token or an empty API token raise an exception.
235
- def check_init_auth_requirements
236
- if @options[:api_token].nil? || @options[:api_token].empty?
237
- raise OptimizelyError::NoAPIToken, "An API token is required to initialize Optimizely."
238
- else
239
- self.token = @options[:api_token]
240
- end
241
- end
242
-
243
- # As the authentication for the Optimizely Experiments API is handled via the
244
- # Token header in every request we set the header + also make clear we expect JSON.
245
- def set_headers
246
- @headers = {}
247
- @headers['Token'] = @token
248
- @headers['Content-Type'] = "application/json"
249
- end
250
-
251
- # Parse the JSON data that's been requested through the get method.
252
- def parse_json(data)
253
- json = JSON.parse(data)
254
- json
255
- end
256
- end
207
+ end
208
+
209
+
210
+ private
211
+
212
+
213
+ # If there is no API token or an empty API token raise an exception.
214
+ def check_init_auth_requirements
215
+ if @options[:api_token].nil? || @options[:api_token].empty?
216
+ raise OptimizelyError::NoAPIToken, "An API token is required to initialize Optimizely."
217
+ else
218
+ self.token = @options[:api_token]
219
+ end
220
+ end
221
+
222
+ # As the authentication for the Optimizely Experiments API is handled via the
223
+ # Token header in every request we set the header + also make clear we expect JSON.
224
+ def set_headers
225
+ @headers = {}
226
+ @headers['Token'] = @token
227
+ @headers['Content-Type'] = "application/json"
228
+ end
229
+
230
+ # Parse the JSON data that's been requested through the get method.
231
+ def parse_json(data)
232
+ json = JSON.parse(data)
233
+ json
234
+ end
235
+ end
257
236
  end
@@ -1,9 +1,10 @@
1
1
  module Optimizely
2
- class Experiment
2
+ class Experiment
3
3
 
4
4
  attr_reader :id, :project_id, :variation_ids, :edit_url, :status
5
5
 
6
6
  def initialize(json)
7
+ @json = json
7
8
  @id = json['id']
8
9
  @project_id = json['project_id']
9
10
  @variation_ids = json['variation_ids']
@@ -11,5 +12,9 @@ module Optimizely
11
12
  @status = json['status']
12
13
  end
13
14
 
14
- end
15
+ def [](x)
16
+ return @json[x]
17
+ end
18
+
19
+ end
15
20
  end
@@ -1,14 +1,19 @@
1
1
  module Optimizely
2
- class Project
2
+ class Project
3
3
 
4
4
  attr_reader :project_name, :project_status, :id, :account_id
5
5
 
6
6
  def initialize(json)
7
+ @json = json
7
8
  @project_name = json['project_name']
8
9
  @project_status = json['project_status']
9
10
  @id = json['id']
10
11
  @account_id = json['account_id']
11
12
  end
12
13
 
13
- end
14
+ def [](x)
15
+ return @json[x]
16
+ end
17
+
18
+ end
14
19
  end
@@ -1,21 +1,26 @@
1
1
  module Optimizely
2
- class Variation
2
+ class Variation
3
3
 
4
4
  attr_reader :is_paused, :description, :weight, :created, :variation_id,
5
- :section_id, :js_component, :experiment_id, :project_id, :id
5
+ :section_id, :js_component, :experiment_id, :project_id, :id
6
6
 
7
7
  def initialize(json)
8
- @is_paused = json['is_paused']
9
- @description = json['description']
10
- @weight = json['weight']
11
- @created = DateTime.parse(json['created'])
12
- @variation_id = json['variation_id']
13
- @section_id = json['section_id']
14
- @js_component = json['js_component']
15
- @experiment_id = json['experiment_id']
16
- @project_id = json['project_id']
17
- @id = json['id']
8
+ @json = json
9
+ @is_paused = json['is_paused']
10
+ @description = json['description']
11
+ @weight = json['weight']
12
+ @created = DateTime.parse(json['created'])
13
+ @variation_id = json['variation_id']
14
+ @section_id = json['section_id']
15
+ @js_component = json['js_component']
16
+ @experiment_id = json['experiment_id']
17
+ @project_id = json['project_id']
18
+ @id = json['id']
18
19
  end
19
20
 
20
- end
21
+ def [](x)
22
+ return @json[x]
23
+ end
24
+
25
+ end
21
26
  end
@@ -1,3 +1,3 @@
1
1
  module Optimizely
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
data/optimizely.gemspec CHANGED
@@ -17,5 +17,11 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
  s.extra_rdoc_files = ["README.md"]
20
- s.add_development_dependency 'rake'
21
- end
20
+
21
+ s.add_runtime_dependency 'json', '~> 1.8.3'
22
+
23
+ s.add_development_dependency 'bundler', '~> 1.10.6'
24
+ s.add_development_dependency 'rake', '~> 10.4.2'
25
+ s.add_development_dependency 'test-unit', '~> 3.1.2'
26
+ s.add_development_dependency 'pry', '~> 0.10.1'
27
+ end
metadata CHANGED
@@ -1,29 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimizely
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martijn Scheijbeler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-13 00:00:00.000000000 Z
11
+ date: 2015-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.8.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 1.10.6
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 1.10.6
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: rake
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
- - - '>='
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 10.4.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 10.4.2
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 3.1.2
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 3.1.2
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
18
74
  - !ruby/object:Gem::Version
19
- version: '0'
75
+ version: 0.10.1
20
76
  type: :development
21
77
  prerelease: false
22
78
  version_requirements: !ruby/object:Gem::Requirement
23
79
  requirements:
24
- - - '>='
80
+ - - ~>
25
81
  - !ruby/object:Gem::Version
26
- version: '0'
82
+ version: 0.10.1
27
83
  description: A Ruby gem to communicate with the Optimizely Experiments API, it lets
28
84
  you create and manage Optimizely projects and experiments.
29
85
  email: martijn@marusem.com
@@ -67,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
67
123
  version: '0'
68
124
  requirements: []
69
125
  rubyforge_project:
70
- rubygems_version: 2.0.3
126
+ rubygems_version: 2.4.2
71
127
  signing_key:
72
128
  specification_version: 4
73
129
  summary: The Optimizely Experiment API lets you create and manage Optimizely projects