optimizely 1.2.1 → 1.2.2

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