tamber 0.1.6 → 0.1.7

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: 6ff3f3dba7a668c6253df8294dfb0e52ed8142c0
4
- data.tar.gz: 92d0beaa0f356f2f2b2bc5565539bdc95aaf6e22
3
+ metadata.gz: af8fed11bb5f401f45c1c884abfaca26fb830959
4
+ data.tar.gz: e623a12f3d1b68e53c8813ab18b9007f141dd4e2
5
5
  SHA512:
6
- metadata.gz: 7683fbdcb694288bac09b9641c5406c27c067f74fe41ed5b27691e399e77a81eaceecd4b685413d6bc3797329f331cfd7f142e741149ec509029d42d5f45de1e
7
- data.tar.gz: dc82af318fd12f93b80b0b9fdbab01476cd4b1ab24e919f278362e22cb94f8c1230d1783a281f40db8b64915b27eb08240ee3f9bf53cf9d8a587ca7c0ade816e
6
+ metadata.gz: 887b3119d229994872f2686c20f0622e4b683ea25d829a79d8773b24a276f043ff04031030d7a3f58637f73ff63b611c561987783fbca5d8e7f48f77c7030232
7
+ data.tar.gz: 38428805fbce8ccdde489cd7d95c80dd2145d7d8b333b3f0657598913f9b6761e76a62f710646ffe53414c43eab2ccdce42c137ab9fa39a5ba82774f72fcb138
data/.gitignore ADDED
@@ -0,0 +1,6 @@
1
+ /tamber-*.gem
2
+ /Gemfile.lock
3
+ .rvmrc
4
+ Gemfile.lock
5
+ tags
6
+ .ruby-version
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+
3
+ before_install:
4
+ - gem update bundler # -v 1.7.14 if a specific version is needed
5
+
6
+ rvm:
7
+ - 1.9.3
8
+ - 2.0.0
9
+ - 2.1
10
+ - 2.2
11
+ - jruby-19mode
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "https://rubygems.org"
2
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Tamber, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,223 @@
1
+ # Tamber API Client for Ruby [![Build Status](https://travis-ci.org/tamber/tamber-ruby.svg?branch=master)](https://travis-ci.org/tamber/tamber-ruby)
2
+
3
+ Recommendation engines for developers, easy as π. Build blazing fast, head-scratchingly accurate hosted recommendation engines in minutes.
4
+
5
+ The Tamber iOS SDK makes it easy to track events (user-item interactions) and get recommendations for your users inside your iOS app.
6
+
7
+ [Get a free api key][homepage] to get started.
8
+
9
+ ## Documentation
10
+
11
+ See [full API documentation][reference].
12
+
13
+ ## Installation
14
+
15
+ To use the Tamber Ruby bindings, you should run:
16
+
17
+ ```
18
+ gem install tamber
19
+ ```
20
+
21
+ If you want to build the gem from source:
22
+
23
+ ```
24
+ gem build tamber.gemspec
25
+ ```
26
+
27
+ ## Compatibility
28
+
29
+ We are compatible with Ruby 1.9.3 and above.
30
+
31
+
32
+ ## Usage
33
+
34
+ If you are just getting started, check out the [Quick Start][quickstart] guide for instructions on how to get setup.
35
+
36
+ *We recommend tracking events from the client-side so that Tamber can learn from clicks/views, guest users, and contextual data. Use our [iOS][tamber-ios], [Node][tamber-node], or [javascript][tamber-js] SDKs to start tracking.*
37
+
38
+ Of course, you can also track events from your backend.
39
+
40
+ ### Track Events
41
+
42
+ ```rb
43
+ require 'tamber'
44
+ Tamber.project_key = 'your_project_key'
45
+
46
+ begin
47
+ Tamber::Event.track(
48
+ user: 'user_rlox8k927z7p',
49
+ behavior: 'like'
50
+ item: 'item_wmt4fn6o4zlk',
51
+ context: ["homepage", "featured_section"]
52
+ )
53
+ rescue TamberError => error
54
+ puts error.message
55
+ end
56
+ ```
57
+
58
+
59
+ ### Get Recommendations
60
+
61
+ Once you have tracked enough events and created your engine, it's time to put personalized recommendations in your app.
62
+
63
+ The primary method of discovery in Tamber is the `Discover.next` method, which returns the optimal set of items that the user should be shown next.
64
+
65
+ #### For You
66
+
67
+ To put personalized recommendations on your homepage, or in any recommended section, just call `Discover.next` with the number of recommendations you want to display (if you are calling server-side, also set the `user`).
68
+
69
+ ```rb
70
+ Tamber.project_key = 'your_project_key'
71
+
72
+ begin
73
+ d = Tamber::Discover.next(
74
+ user: 'user_rlox8k927z7p',
75
+ number: 10
76
+ )
77
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
78
+ rescue TamberError => error
79
+ puts error.message
80
+ end
81
+ ```
82
+
83
+ ##### `continuation`
84
+
85
+ `Discover.next` is optimized for the exact moment and context of the user at the time of request, so standard pagination is not possible. Instead, `Discover.next` uses automatic continuation to allow you to 'show more' or implement infinite scrolling.
86
+
87
+ When you want to add more recommendations to those currently displayed to the user, just set the `continuation` field to `true`. Tamber will automatically generate the set of items that should be appended to the current user-session's list. The `Discover.next` user-session is reset when `Discover.next` is called without `continuation`.
88
+
89
+ ```rb
90
+ Tamber.project_key = 'your_project_key'
91
+
92
+ begin
93
+ d = Tamber::Discover.next(
94
+ user: 'user_rlox8k927z7p',
95
+ number: 10,
96
+ continuation: true
97
+ )
98
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
99
+ rescue TamberError => error
100
+ puts error.message
101
+ end
102
+ ```
103
+
104
+ #### Up Next
105
+
106
+ Keep users engaged by creating a path of discovery as they navigate from item to item. Just add the id of the item that the user is navigating to / looking at.
107
+
108
+ ```rb
109
+ begin
110
+ d = Tamber::Discover.next(
111
+ user: 'user_rlox8k927z7p',
112
+ item: 'item_wmt4fn6o4zlk',
113
+ number: 14
114
+ )
115
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
116
+ rescue TamberError => error
117
+ puts error.message
118
+ end
119
+ ```
120
+
121
+ If you are tracking events in your backend and want to track `clicked` or `viewed` events when users request the next page, you can also get `next` for the user-item pair by adding the `get_recs` field to your `Event.track` call.
122
+
123
+ ```rb
124
+ begin
125
+ e = Tamber::Event.track(
126
+ user: 'user_rlox8k927z7p',
127
+ behavior: 'clicked'
128
+ item: 'item_wmt4fn6o4zlk',
129
+ get_recs: {
130
+ number: 14
131
+ }
132
+ )
133
+ e.recommended.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
134
+ rescue TamberError => error
135
+ puts error.message
136
+ end
137
+ ```
138
+
139
+ #### Trending
140
+
141
+ Help your users keep their fingers on the pulse of your platform by showing them the hottest, most popular, newest, or most up-and-coming items.
142
+
143
+ ```rb
144
+ begin
145
+ d = Tamber::Discover.hot() // the hottest (trending) items
146
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
147
+ end
148
+
149
+ begin
150
+ d = Tamber::Discover.popular() // the hottest (trending) items
151
+ end
152
+
153
+ # BETA endpoints
154
+ begin
155
+ d = Tamber::Discover.uac() // the most up-and-coming items
156
+ end
157
+
158
+ begin
159
+ d = Tamber::Discover.new() // the newest items
160
+ end
161
+ ```
162
+
163
+ #### Build Your Own Features
164
+
165
+ Tamber allows you to use lower-level methods to get lists of recommended items, similar item matches, and similar items for a given user with which you can build your own discovery experiences. Importantly, these methods return raw recommendation data and are not intended to be pushed directly to users.
166
+
167
+ ```rb
168
+ begin
169
+ Tamber::Discover.recommended(user: 'user_rlox8k927z7p').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
170
+ rescue TamberError => error
171
+ puts error.message
172
+ end
173
+
174
+ begin
175
+ Tamber::Discover.similar(item: 'item_wmt4fn6o4zlk').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
176
+ rescue TamberError => error
177
+ puts error.message
178
+ end
179
+
180
+ begin
181
+ Tamber::Discover.recommendedSimilar(
182
+ user: 'user_rlox8k927z7p',
183
+ item: 'item_wmt4fn6o4zlk'
184
+ ).each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
185
+ rescue TamberError => error
186
+ puts error.message
187
+ end
188
+ ```
189
+
190
+ ### Sync Items (optional)
191
+
192
+ Keep Tamber in sync with your item data in order to use recommendation filtering. Just call `Item.update` wherever you create and update items in your backend. If you have a Database module, we recommend adding this method there.
193
+
194
+ ```rb
195
+ require 'tamber'
196
+ Tamber.project_key = 'your_project_key'
197
+
198
+ begin
199
+ Tamber::Item.update(
200
+ id: 'item_wmt4fn6o4zlk',
201
+ updates: {
202
+ add: {
203
+ properties: {
204
+ 'available_large': false,
205
+ 'stock': 89
206
+ }
207
+ }
208
+ }
209
+ )
210
+ rescue TamberError => error
211
+ puts error.message
212
+ end
213
+ ```
214
+
215
+ See [Tests](https://github.com/tamber/tamber-ruby/tree/master/test) for more examples.
216
+
217
+ [homepage]: https://tamber.com
218
+ [quickstart]: https://tamber.com/docs/start/
219
+ [reference]: https://tamber.com/docs/api
220
+ [dashboard]: https://dashboard.tamber.com/
221
+ [tamber-ios]: https://github.com/tamber/tamber-ios
222
+ [tamber-node]: https://github.com/tamber/tamber-node
223
+ [tamber-js]: https://github.com/tamber/tamber.js
data/README.rdoc ADDED
@@ -0,0 +1,196 @@
1
+ = Tamber API Client for Ruby {<img src="https://travis-ci.org/tamber/tamber-ruby.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/tamber/tamber-ruby]
2
+
3
+ Recommendation engines for developers, easy as π. Build blazing fast, head-scratchingly accurate hosted recommendation engines in minutes.
4
+
5
+ The Tamber iOS SDK makes it easy to track events (user-item interactions) and get recommendations for your users inside your iOS app.
6
+
7
+ {Get a free api key}[https://tamber.com] to get started.
8
+
9
+ == Documentation
10
+
11
+ See {full API documentation}[https://tamber.com/docs/api].
12
+
13
+ == Installation
14
+
15
+ To use the Tamber Ruby bindings, you should run:
16
+
17
+ gem install tamber
18
+
19
+ If you want to build the gem from source:
20
+
21
+ gem build tamber.gemspec
22
+
23
+
24
+ == Compatibility
25
+
26
+ We are compatible with Ruby 1.9.3 and above.
27
+
28
+
29
+ == Usage
30
+
31
+ If you are just getting started, check out the {Quick Start}[https://tamber.com/docs/start/] guide for instructions on how to get setup.
32
+
33
+ *We recommend tracking events from the client-side so that Tamber can learn from clicks/views, guest users, and contextual data. Use our {iOS}[https://github.com/tamber/tamber-ios], {Node}[https://github.com/tamber/tamber-node], or {javascript}[https://github.com/tamber/tamber.js] SDKs to start tracking.*
34
+
35
+ Of course, you can also track events from your backend.
36
+
37
+ === Track Events
38
+
39
+ require 'tamber'
40
+ Tamber.project_key = 'your_project_key'
41
+
42
+ begin
43
+ Tamber::Event.track(
44
+ user: 'user_rlox8k927z7p',
45
+ behavior: 'like'
46
+ item: 'item_wmt4fn6o4zlk',
47
+ context: ["homepage", "featured_section"]
48
+ )
49
+ rescue TamberError => error
50
+ puts error.message
51
+ end
52
+
53
+
54
+ === Get Recommendations
55
+
56
+ Once you have tracked enough events and created your engine, it's time to put personalized recommendations in your app.
57
+
58
+ The primary method of discovery in Tamber is the `Discover.next` method, which returns the optimal set of items that the user should be shown next.
59
+
60
+ ==== For You
61
+
62
+ To put personalized recommendations on your homepage, or in any recommended section, just call `Discover.next` with the number of recommendations you want to display (if you are calling server-side, also set the `user`).
63
+
64
+ Tamber.project_key = 'your_project_key'
65
+
66
+ begin
67
+ d = Tamber::Discover.next(
68
+ user: 'user_rlox8k927z7p',
69
+ number: 10
70
+ )
71
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
72
+ rescue TamberError => error
73
+ puts error.message
74
+ end
75
+
76
+ ===== `continuation`
77
+
78
+ `Discover.next` is optimized for the exact moment and context of the user at the time of request, so standard pagination is not possible. Instead, `Discover.next` uses automatic continuation to allow you to 'show more' or implement infinite scrolling.
79
+
80
+ When you want to add more recommendations to those currently displayed to the user, just set the `continuation` field to `true`. Tamber will automatically generate the set of items that should be appended to the current user-session's list. The `Discover.next` user-session is reset when `Discover.next` is called without `continuation`.
81
+
82
+ Tamber.project_key = 'your_project_key'
83
+
84
+ begin
85
+ d = Tamber::Discover.next(
86
+ user: 'user_rlox8k927z7p',
87
+ number: 10,
88
+ continuation: true
89
+ )
90
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
91
+ rescue TamberError => error
92
+ puts error.message
93
+ end
94
+
95
+ ==== Up Next
96
+
97
+ Keep users engaged by creating a path of discovery as they navigate from item to item. Just add the id of the item that the user is navigating to / looking at.
98
+
99
+ begin
100
+ d = Tamber::Discover.next(
101
+ user: 'user_rlox8k927z7p',
102
+ item: 'item_wmt4fn6o4zlk',
103
+ number: 14
104
+ )
105
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
106
+ rescue TamberError => error
107
+ puts error.message
108
+ end
109
+
110
+ If you are tracking events in your backend and want to track `clicked` or `viewed` events when users request the next page, you can also get `next` for the user-item pair by adding the `get_recs` field to your `Event.track` call.
111
+
112
+ begin
113
+ e = Tamber::Event.track(
114
+ user: 'user_rlox8k927z7p',
115
+ behavior: 'clicked'
116
+ item: 'item_wmt4fn6o4zlk',
117
+ get_recs: {
118
+ number: 14
119
+ }
120
+ )
121
+ e.recommended.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
122
+ rescue TamberError => error
123
+ puts error.message
124
+ end
125
+
126
+ ==== Trending
127
+
128
+ Help your users keep their fingers on the pulse of your platform by showing them the hottest, most popular, newest, or most up-and-coming items.
129
+
130
+ begin
131
+ d = Tamber::Discover.hot() // the hottest (trending) items
132
+ d.each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
133
+ end
134
+
135
+ begin
136
+ d = Tamber::Discover.popular() // the hottest (trending) items
137
+ end
138
+
139
+ // BETA endpoints
140
+ begin
141
+ d = Tamber::Discover.uac() // the most up-and-coming items
142
+ end
143
+
144
+ begin
145
+ d = Tamber::Discover.new() // the newest items
146
+ end
147
+
148
+ ==== Build Your Own Features
149
+
150
+ Tamber allows you to use lower-level methods to get lists of recommended items, similar item matches, and similar items for a given user with which you can build your own discovery experiences. Importantly, these methods return raw recommendation data and are not intended to be pushed directly to users.
151
+
152
+ begin
153
+ Tamber::Discover.recommended(user: 'user_rlox8k927z7p').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
154
+ rescue TamberError => error
155
+ puts error.message
156
+ end
157
+
158
+ begin
159
+ Tamber::Discover.similar(item: 'item_wmt4fn6o4zlk').each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
160
+ rescue TamberError => error
161
+ puts error.message
162
+ end
163
+
164
+ begin
165
+ Tamber::Discover.recommendedSimilar(
166
+ user: 'user_rlox8k927z7p',
167
+ item: 'item_wmt4fn6o4zlk'
168
+ ).each { |rec| puts "item: #{rec.item}, score: #{rec.score}"}
169
+ rescue TamberError => error
170
+ puts error.message
171
+ end
172
+
173
+ === Sync Items (optional)
174
+
175
+ Keep Tamber in sync with your item data in order to use recommendation filtering. Just call `Item.update` wherever you create and update items in your backend. If you have a Database module, we recommend adding this method there.
176
+
177
+ require 'tamber'
178
+ Tamber.project_key = 'your_project_key'
179
+
180
+ begin
181
+ Tamber::Item.update(
182
+ id: 'item_wmt4fn6o4zlk',
183
+ updates: {
184
+ add: {
185
+ properties: {
186
+ 'available_large': false,
187
+ 'stock': 89
188
+ }
189
+ }
190
+ }
191
+ )
192
+ rescue TamberError => error
193
+ puts error.message
194
+ end
195
+
196
+ See {Tests}[https://github.com/tamber/tamber-ruby/tree/master/test] for more examples.
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'rake/testtask'
2
+
3
+ task :default => [:test]
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = './test/*_test.rb'
7
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.7