optimizely_server_side 0.0.9 → 0.0.10

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: 8e914671dc234dd0b0a8cc3b7aa11903a4398095
4
- data.tar.gz: 6b2e99cc7637393048c5b4fd1930a0d811c69b3e
3
+ metadata.gz: 21c1476041632408d773cb808b130c96820800dd
4
+ data.tar.gz: e331c2e11409f4fc601bd7713cdc6b5ff91747a2
5
5
  SHA512:
6
- metadata.gz: fb68662ca48927d48c1bfea819646234181cc06c298d5c3af713432a156c80fcb39945435cb7e439266a286329810bc468a7f30e3c7e5b5c6b4cdcf1b3253982
7
- data.tar.gz: edbfc9ce0f8200fe70e594030fa37092b8119095c486ee46b3fbee99f9ae5c19be3bb866390e0c523fec18fde906350d303b1499ba9df30380d155a6c6eb23af
6
+ metadata.gz: 24787d1c316e0d09aff313bf6bfac09fd0abec5c59086c7b59800a7bdd15910ad834ee8fa0f5a38ecec44c898072353cdc494907c46a61f60d1d612910fdd8fc
7
+ data.tar.gz: 2169eb627e065d0ff2bb98b9bc636602d4f2ab326e0e6b7decaffd83ede9bdbd7b26a540e6ad4adc038696449163cbe17c033bbab74c9b9aee123db1c19afcf5
data/Changelog.md ADDED
@@ -0,0 +1,7 @@
1
+ # 0.0.10
2
+
3
+ Introduced the `user_attributes` option which takes care of passing visitor_id and custom attributes that will be required for Audience level bucketing.
4
+
5
+ # 0.0.9
6
+
7
+ Event dispatcher can now be passed as option.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- optimizely_server_side (0.0.9)
4
+ optimizely_server_side (0.0.10)
5
5
  activesupport (~> 4.2, >= 4.2.6)
6
6
  optimizely-sdk (~> 0.1.1)
7
7
 
data/Readme.md CHANGED
@@ -58,11 +58,16 @@ end
58
58
 
59
59
  ```
60
60
 
61
- Config info
61
+ _Config info_
62
62
 
63
- `config_endpoint` - This is the Datafile endpoint which returns JSON config. `PROJECT_ID` is a id of your server side project at https://app.optimizely.com .
64
- `cache_expiry` - Time we want to keep the config cached in memory.
65
- `event_dispatcher` - Optimizely needs to track every visit. You can pass your own event dispatcher from here. Read [more](https://developers.optimizely.com/server/reference/index#event-dispatcher)
63
+ - `config_endpoint` - This is the Datafile endpoint which returns JSON config. `PROJECT_ID` is a id of your server side project at https://app.optimizely.com .
64
+ - `cache_expiry` - Time we want to keep the config cached in memory.
65
+ - `event_dispatcher` - Optimizely needs to track every visit. You can pass your own event dispatcher from here. Read [more](https://developers.optimizely.com/server/reference/index#event-dispatcher)
66
+ - `user_attributes` - Everything related to user is passed from here. The must have key is `visitor_id`. In the same hash you can pass other other custom attributes. eq
67
+
68
+ ```
69
+ config.user_attributes = {'visitor_id' => 1234, 'device_type' => 'iPhone'}
70
+ ```
66
71
 
67
72
 
68
73
 
@@ -84,7 +89,7 @@ class ApplicationController < ActionController::Base
84
89
  # This links the browser cookie for visitor_id to
85
90
  # OptimizelyServerSide
86
91
  OptimizelyServerSide.configure do |config|
87
- config.visitor_id = cookies[:visitor_id]
92
+ config.user_attributes = {'visitor_id' => cookies[:visitor_id]}
88
93
  end
89
94
  end
90
95
 
@@ -99,13 +104,13 @@ class ApplicationController < ActionController::Base
99
104
  <% experiment(EXPERIMENT_KEY) do |config| %>
100
105
 
101
106
  <% config.variation_one(VARIATION_ONE_KEY) do %>
102
- <%= render partial: 'variation_one_experience' %>
107
+ <%= render partial: 'variation_one_experience' %>
103
108
  <% end %>
104
109
 
105
110
  <% config.variation_default(VARIATION_DEFAULT_KEY, primary: true) do %>
106
111
  <%= render partial: 'variation_default_experience' %>
107
112
  <% end %>
108
-
113
+
109
114
  <% end %>
110
115
  ```
111
116
 
@@ -151,7 +156,7 @@ You can call you own method names with `variation_` . Below i have `config.varia
151
156
  <% config.variation_pathetic_experience(VARIATION_DEFAULT_KEY, primary: true) do %>
152
157
  <%= render partial: 'variation_default_experience' %>
153
158
  <% end %>
154
-
159
+
155
160
  <% end %>
156
161
 
157
162
  ```
@@ -6,12 +6,13 @@ module OptimizelyServerSide
6
6
  # Configuration enables to open up the configuration of gem for the application.
7
7
  # config_endpoint: Optimizely config endpoint
8
8
  # cache_expiry: (In minutes) How long we want to cache the config.
9
- attr_accessor :config_endpoint, :cache_expiry, :visitor_id, :logger,
9
+ attr_accessor :config_endpoint, :cache_expiry, :user_attributes, :logger,
10
10
  :event_dispatcher
11
11
 
12
12
  def initialize
13
13
  @config_endpoint = 'http://foo.com'
14
14
  @cache_expiry = 15
15
+ @user_attributes = {}
15
16
  end
16
17
 
17
18
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module OptimizelyServerSide
2
4
  class Experiment
3
5
 
@@ -28,8 +28,8 @@ module OptimizelyServerSide
28
28
  OptimizelyServerSide::OptimizelySdk
29
29
  .project_instance(event_dispatcher: OptimizelyServerSide.configuration.event_dispatcher)
30
30
  .activate(experiment_key,
31
- OptimizelyServerSide.configuration.visitor_id,
32
- OptimizelyServerSide.configuration.logger)
31
+ OptimizelyServerSide.configuration.user_attributes['visitor_id'.freeze],
32
+ OptimizelyServerSide.configuration.user_attributes)
33
33
  end
34
34
 
35
35
  end
@@ -2,8 +2,8 @@ $:.push File.expand_path("../lib", __FILE__)
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'optimizely_server_side'
5
- s.version = '0.0.9'
6
- s.date = '2016-08-24'
5
+ s.version = '0.0.10'
6
+ s.date = '2016-08-28'
7
7
  s.summary = "Optimizely server side. A wrapper on top of optimizely's ruby sdk for easy caching of server side config "
8
8
  s.description = "Optimizely server side. A A/B test wrapper on top of optimizely's ruby sdk for easy caching of server side config and exposing few more utility helpers. Handling of fallbacks and marking primary experiments. "
9
9
  s.authors = ["Ankit Gupta"]
@@ -20,5 +20,3 @@ Gem::Specification.new do |s|
20
20
  s.add_runtime_dependency 'optimizely-sdk' , '~> 0.1.1'
21
21
  s.add_runtime_dependency 'activesupport', '~> 4.2', '>= 4.2.6'
22
22
  end
23
-
24
-
@@ -12,10 +12,10 @@ RSpec.describe OptimizelyServerSide::Configuration do
12
12
 
13
13
  end
14
14
 
15
- describe '#visitor_id' do
15
+ describe '#user_attributes' do
16
16
 
17
- it 'defaults to nil' do
18
- expect(subject.visitor_id).to be_nil
17
+ it 'defaults to {}' do
18
+ expect(subject.user_attributes).to eq({})
19
19
  end
20
20
  end
21
21
 
@@ -23,7 +23,7 @@ RSpec.describe OptimizelyServerSide::Configuration do
23
23
  describe '#event_dispatcher' do
24
24
 
25
25
  it 'defaults to nil' do
26
- expect(subject.visitor_id).to be_nil
26
+ expect(subject.event_dispatcher).to be_nil
27
27
  end
28
28
 
29
29
  end
@@ -23,8 +23,8 @@ RSpec.describe OptimizelyServerSide do
23
23
  expect(OptimizelyServerSide.configuration.cache_expiry).to eq(12)
24
24
  end
25
25
 
26
- it 'has no visitor_id' do
27
- expect(OptimizelyServerSide.configuration.visitor_id).to be_nil
26
+ it 'has empty user_attributes' do
27
+ expect(OptimizelyServerSide.configuration.user_attributes).to eq({})
28
28
  end
29
29
  end
30
30
 
@@ -41,7 +41,7 @@ RSpec.describe OptimizelyServerSide do
41
41
 
42
42
  it 'has config_endpoint' do
43
43
  OptimizelyServerSide.configure do |config|
44
- config.visitor_id = '1234abcdef'
44
+ config.user_attributes = { visitor_id: '1234abcdef' }
45
45
  end
46
46
 
47
47
  expect(OptimizelyServerSide.configuration.config_endpoint).to eq('https://cdn.optimizely.com/json/5960232316.json')
@@ -51,8 +51,12 @@ RSpec.describe OptimizelyServerSide do
51
51
  expect(OptimizelyServerSide.configuration.cache_expiry).to eq(12)
52
52
  end
53
53
 
54
- it 'has no visitor_id' do
55
- expect(OptimizelyServerSide.configuration.visitor_id).to eq('1234abcdef')
54
+ it 'has user_attributes' do
55
+ expect(OptimizelyServerSide.configuration.user_attributes).to eq({visitor_id: '1234abcdef'})
56
+ end
57
+
58
+ it 'has a visitor_id' do
59
+ expect(OptimizelyServerSide.configuration.user_attributes[:visitor_id]).to eq('1234abcdef')
56
60
  end
57
61
 
58
62
  it 'has instance of event_dispatcher' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimizely_server_side
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ankit Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-24 00:00:00.000000000 Z
11
+ date: 2016-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -83,6 +83,7 @@ files:
83
83
  - ".gitignore"
84
84
  - ".rspec"
85
85
  - ".travis.yml"
86
+ - Changelog.md
86
87
  - Gemfile
87
88
  - Gemfile.lock
88
89
  - Readme.md