test_track_rails_client 1.1.0 → 1.2.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 CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZWRlMmZlOWFkYmQwZmJiMWE5YzAyZDdmYjBkOTIwYTRlZDM2MmZjYg==
5
- data.tar.gz: !binary |-
6
- OGZmNTJjMGZiYjI2N2YyMzAxNGVhNzg2ZDk0MTRlYzM2YzdkMDA5MA==
2
+ SHA1:
3
+ metadata.gz: 2e89607653cb61940fedd99d80d61957a0bf57a1
4
+ data.tar.gz: dd88c45263723f36ac874a066dce626d24b85cc8
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NWI4NGRhMzI4OTcwMzBlNWI1NmM0MDJhOWE5YWEzNzk5ODI3ZjM3OGFhNzZj
10
- YzFkMTlhZjU5YjA3YzgxMjQ1ODgwODUyNWY3OTEwOGVhOTIyMjJkNjZmNzAx
11
- OGQ0ZWIzZjZhN2MwOGNiYTAxODNhYjk3MWQwOGIwZDEzN2YxNjE=
12
- data.tar.gz: !binary |-
13
- NGM5NzAyNWMyYzc1OWY0NTYzZTE5YjcwYTdkZTk5NDhmMGQyMjA0NWYzYzE1
14
- ZGVjZWQzYWVlODgwODlhODkxZGI1MmZmMjg0NThkZTU0YTY0NGYzMmVkZGE4
15
- OTFjMTUyMDM5MGM1YjQzODAwYzIxZGUwMzliZDMwZGYzNTIwMTI=
6
+ metadata.gz: a49693c2afd28427caacc2398673a8dc6442eabfa57bbc00a8d999343b7bf9220c0fd8a0c6dfba72bfb28e1a91009e67d97e7d77e229aee611190b7caa9a20bb
7
+ data.tar.gz: ea250b67d413d2e3e6acd8b854d5bb9799cce2d2b6105570af3c192813cfcaff655d8e50cfb19218a35007003225005a95f4025bed779d541f9b6bcd91c0325c
data/README.md CHANGED
@@ -32,7 +32,14 @@ development.
32
32
  Set up ENV vars in every environment:
33
33
 
34
34
  * `MIXPANEL_TOKEN` - By default, TestTrack reports to Mixpanel. If you're using a [custom analytics provider](#custom-analytics) you can omit this.
35
- * `TEST_TRACK_API_URL` - Set this to the URL of your TestTrack instance with your app credentials, e.g. `http://[myapp]:[your new app password]@testtrack.dev/`
35
+ * `TEST_TRACK_API_URL` - Set this to the URL of your TestTrack instance with your app credentials, e.g. `http://[myapp]:[your new app password]@[your-app-domain]/`
36
+
37
+ [your-app-domain] can be
38
+ * `testtrack.dev` ([Pow](pow.cx))
39
+ * `localhost:PORT`
40
+ * `example.org`
41
+ * etc
42
+
36
43
 
37
44
  Mix `TestTrack::Controller` into any controllers needing access to TestTrack:
38
45
 
@@ -225,6 +232,9 @@ end
225
232
 
226
233
  The `OfflineSession` class can be used to load a test track visitor when there is no access to browser cookies. It is perfect for use in a process being run from either a job queue or a scheduler. The visitor object that is yielded to the block is the same as the visitor in a controller context; it has both the `vary` and `ab` methods.
227
234
 
235
+ An `OfflineSession` can be established in one of two ways:
236
+
237
+ 1. with an `identifier_type`:
228
238
  ```ruby
229
239
  OfflineSession.with_visitor_for(:myapp_user_id, 1234) do |test_track_visitor|
230
240
  test_track_visitor.vary :name_of_split, context: 'background_job' do |v|
@@ -241,6 +251,23 @@ OfflineSession.with_visitor_for(:myapp_user_id, 1234) do |test_track_visitor|
241
251
  end
242
252
  ```
243
253
 
254
+ 2. with a `TestTrack::Visitor#id`:
255
+ ```ruby
256
+ OfflineSession.with_visitor_id(1234) do |test_track_visitor|
257
+ test_track_visitor.vary :name_of_split, context: 'background_job' do |v|
258
+ v.when :variant_1, :variant_2 do
259
+ # Do something
260
+ end
261
+ v.when :variant_3 do
262
+ # Do another thing
263
+ end
264
+ v.default :variant_4 do
265
+ # Do something else
266
+ end
267
+ end
268
+ end
269
+ ```
270
+
244
271
  ### Varying app behavior from within a model
245
272
 
246
273
  The `TestTrack::Identity` concern can be included in a model and it will add two methods to the model: `test_track_vary` and `test_track_ab`. Behind the scenes, these methods check to see if they are being used within a web context of a controller that includes `TestTrack::Controller` or not. If called in a web context they will use the `test_track_visitor` that the controller has and participate in the existing session, if not, they will standup an `OfflineSession`.
data/Rakefile CHANGED
@@ -69,4 +69,10 @@ task :vendor_deps do
69
69
  end
70
70
 
71
71
  task(:default).clear
72
- task default: [:rubocop, :spec]
72
+ if ENV['APPRAISAL_INITIALIZED'] || ENV['TRAVIS']
73
+ task default: [:rubocop, :spec]
74
+ else
75
+ require 'appraisal'
76
+ Appraisal::Task.new
77
+ task default: :appraisal
78
+ end
@@ -1,20 +1,31 @@
1
1
  class TestTrack::OfflineSession
2
- def initialize(identifier_type, identifier_value)
3
- @identifier_type = identifier_type
4
- @identifier_value = identifier_value
2
+ def initialize(remote_visitor)
3
+ @remote_visitor = remote_visitor
5
4
  end
6
5
 
7
6
  def self.with_visitor_for(identifier_type, identifier_value)
8
7
  raise ArgumentError, "must provide block to `with_visitor_for`" unless block_given?
9
8
 
10
- new(identifier_type, identifier_value).send :manage do |visitor_dsl|
9
+ remote_visitor = TestTrack::Remote::Visitor.from_identifier(identifier_type, identifier_value)
10
+
11
+ new(remote_visitor).send :manage do |visitor_dsl|
12
+ yield visitor_dsl
13
+ end
14
+ end
15
+
16
+ def self.with_visitor_id(visitor_id)
17
+ raise ArgumentError, "must provide block to `with_visitor_id`" unless block_given?
18
+
19
+ remote_visitor = TestTrack::Remote::Visitor.find(visitor_id)
20
+
21
+ new(remote_visitor).send :manage do |visitor_dsl|
11
22
  yield visitor_dsl
12
23
  end
13
24
  end
14
25
 
15
26
  private
16
27
 
17
- attr_reader :identifier_type, :identifier_value
28
+ attr_reader :remote_visitor
18
29
 
19
30
  def visitor
20
31
  @visitor ||= TestTrack::Visitor.new(
@@ -23,10 +34,6 @@ class TestTrack::OfflineSession
23
34
  )
24
35
  end
25
36
 
26
- def remote_visitor
27
- @remote_visitor ||= TestTrack::Remote::Visitor.from_identifier(identifier_type, identifier_value)
28
- end
29
-
30
37
  def manage
31
38
  yield TestTrack::VisitorDSL.new(visitor)
32
39
  ensure
@@ -1,3 +1,3 @@
1
1
  module TestTrackRailsClient
2
- VERSION = "1.1.0" # rubocop:disable Style/MutableConstant
2
+ VERSION = "1.2.0" # rubocop:disable Style/MutableConstant
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_track_rails_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan O'Neill
@@ -13,214 +13,228 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2017-05-30 00:00:00.000000000 Z
16
+ date: 2017-08-01 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: rails
20
20
  requirement: !ruby/object:Gem::Requirement
21
21
  requirements:
22
- - - ! '>='
22
+ - - ">="
23
23
  - !ruby/object:Gem::Version
24
24
  version: '4.1'
25
- - - <
25
+ - - "<"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '6.0'
28
28
  type: :runtime
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ! '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '4.1'
35
- - - <
35
+ - - "<"
36
36
  - !ruby/object:Gem::Version
37
37
  version: '6.0'
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: faraday
40
40
  requirement: !ruby/object:Gem::Requirement
41
41
  requirements:
42
- - - ! '>='
42
+ - - ">="
43
43
  - !ruby/object:Gem::Version
44
44
  version: '0.8'
45
- - - <
45
+ - - "<"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.8'
55
- - - <
55
+ - - "<"
56
56
  - !ruby/object:Gem::Version
57
57
  version: '1.0'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: faraday_middleware
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - ! '>='
62
+ - - ">="
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - ! '>='
69
+ - - ">="
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: public_suffix
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - ~>
76
+ - - "~>"
77
77
  - !ruby/object:Gem::Version
78
78
  version: 1.4.6
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - ~>
83
+ - - "~>"
84
84
  - !ruby/object:Gem::Version
85
85
  version: 1.4.6
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: mixpanel-ruby
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - ~>
90
+ - - "~>"
91
91
  - !ruby/object:Gem::Version
92
92
  version: '1.4'
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
96
96
  requirements:
97
- - - ~>
97
+ - - "~>"
98
98
  - !ruby/object:Gem::Version
99
99
  version: '1.4'
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: delayed_job
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - ~>
104
+ - - "~>"
105
105
  - !ruby/object:Gem::Version
106
106
  version: '4.0'
107
107
  type: :runtime
108
108
  prerelease: false
109
109
  version_requirements: !ruby/object:Gem::Requirement
110
110
  requirements:
111
- - - ~>
111
+ - - "~>"
112
112
  - !ruby/object:Gem::Version
113
113
  version: '4.0'
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: delayed_job_active_record
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - ! '>='
118
+ - - ">="
119
119
  - !ruby/object:Gem::Version
120
120
  version: '0'
121
121
  type: :runtime
122
122
  prerelease: false
123
123
  version_requirements: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - ! '>='
125
+ - - ">="
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
129
  name: airbrake
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - ! '>='
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: '4.1'
135
135
  type: :runtime
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
- - - ! '>='
139
+ - - ">="
140
140
  - !ruby/object:Gem::Version
141
141
  version: '4.1'
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: delayed-plugins-airbrake
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - ! '>='
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
148
  version: '0'
149
149
  type: :runtime
150
150
  prerelease: false
151
151
  version_requirements: !ruby/object:Gem::Requirement
152
152
  requirements:
153
- - - ! '>='
153
+ - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
156
  - !ruby/object:Gem::Dependency
157
157
  name: request_store
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
- - - ~>
160
+ - - "~>"
161
161
  - !ruby/object:Gem::Version
162
162
  version: '1.3'
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
- - - ~>
167
+ - - "~>"
168
168
  - !ruby/object:Gem::Version
169
169
  version: '1.3'
170
+ - !ruby/object:Gem::Dependency
171
+ name: appraisal
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - "~>"
175
+ - !ruby/object:Gem::Version
176
+ version: 2.2.0
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: 2.2.0
170
184
  - !ruby/object:Gem::Dependency
171
185
  name: pry-rails
172
186
  requirement: !ruby/object:Gem::Requirement
173
187
  requirements:
174
- - - ! '>='
188
+ - - ">="
175
189
  - !ruby/object:Gem::Version
176
190
  version: '0'
177
191
  type: :development
178
192
  prerelease: false
179
193
  version_requirements: !ruby/object:Gem::Requirement
180
194
  requirements:
181
- - - ! '>='
195
+ - - ">="
182
196
  - !ruby/object:Gem::Version
183
197
  version: '0'
184
198
  - !ruby/object:Gem::Dependency
185
199
  name: timecop
186
200
  requirement: !ruby/object:Gem::Requirement
187
201
  requirements:
188
- - - ! '>='
202
+ - - ">="
189
203
  - !ruby/object:Gem::Version
190
204
  version: '0'
191
205
  type: :development
192
206
  prerelease: false
193
207
  version_requirements: !ruby/object:Gem::Requirement
194
208
  requirements:
195
- - - ! '>='
209
+ - - ">="
196
210
  - !ruby/object:Gem::Version
197
211
  version: '0'
198
212
  - !ruby/object:Gem::Dependency
199
213
  name: rubocop
200
214
  requirement: !ruby/object:Gem::Requirement
201
215
  requirements:
202
- - - ! '>='
216
+ - - ">="
203
217
  - !ruby/object:Gem::Version
204
218
  version: '0.36'
205
219
  type: :development
206
220
  prerelease: false
207
221
  version_requirements: !ruby/object:Gem::Requirement
208
222
  requirements:
209
- - - ! '>='
223
+ - - ">="
210
224
  - !ruby/object:Gem::Version
211
225
  version: '0.36'
212
226
  - !ruby/object:Gem::Dependency
213
227
  name: webmock
214
228
  requirement: !ruby/object:Gem::Requirement
215
229
  requirements:
216
- - - ~>
230
+ - - "~>"
217
231
  - !ruby/object:Gem::Version
218
232
  version: 2.1.0
219
233
  type: :development
220
234
  prerelease: false
221
235
  version_requirements: !ruby/object:Gem::Requirement
222
236
  requirements:
223
- - - ~>
237
+ - - "~>"
224
238
  - !ruby/object:Gem::Version
225
239
  version: 2.1.0
226
240
  description: Easy split testing and feature flagging for Rails with TestTrack server
@@ -417,17 +431,17 @@ require_paths:
417
431
  - lib
418
432
  required_ruby_version: !ruby/object:Gem::Requirement
419
433
  requirements:
420
- - - ! '>='
434
+ - - ">="
421
435
  - !ruby/object:Gem::Version
422
436
  version: 1.9.3
423
437
  required_rubygems_version: !ruby/object:Gem::Requirement
424
438
  requirements:
425
- - - ! '>='
439
+ - - ">="
426
440
  - !ruby/object:Gem::Version
427
441
  version: '0'
428
442
  requirements: []
429
443
  rubyforge_project:
430
- rubygems_version: 2.6.8
444
+ rubygems_version: 2.5.1
431
445
  signing_key:
432
446
  specification_version: 4
433
447
  summary: Rails client for TestTrack