stream_rails 2.5.0 → 2.5.1
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 +4 -4
- data/README.md +57 -8
- data/lib/stream_rails/activity.rb +3 -4
- data/lib/stream_rails/enrich.rb +9 -3
- data/lib/stream_rails/sync_policies.rb +2 -2
- data/lib/stream_rails/version.rb +1 -1
- metadata +21 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2be56f2aac225bde0b2b22a82a981fee33411ef
|
4
|
+
data.tar.gz: 9606304c21188e469f650edb1aba96147a9a3f59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff2835f8309e581328db198c6e044ea47dfc2333936bcf3d98203c1dc638e1c53af498657c3452098f3662786461926679f08a678d96f22a997ddc95d9254520
|
7
|
+
data.tar.gz: 603245bbc79e09e0b57e38c29157b8e7981102f84c26bb94acdd46b96d855779f03b532f6e24d3bf8c0523a6791a66e56cd6231c5ecb16c2c9e2c51aa24f9a37
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ What you can build:
|
|
22
22
|
|
23
23
|
You can check out our example app built using this library on Github [https://github.com/GetStream/Stream-Example-Rails](https://github.com/GetStream/Stream-Example-Rails)
|
24
24
|
|
25
|
-
###Table of Contents
|
25
|
+
### Table of Contents
|
26
26
|
|
27
27
|
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
28
28
|
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
@@ -62,7 +62,6 @@ or in your Gemfile:
|
|
62
62
|
gem 'stream_rails'
|
63
63
|
```
|
64
64
|
|
65
|
-
|
66
65
|
### Setup
|
67
66
|
|
68
67
|
Login with Github on getstream.io and get your ```api_key``` and ```api_secret``` from your app configuration (Dashboard screen).
|
@@ -86,9 +85,9 @@ StreamRails.configure do |config|
|
|
86
85
|
end
|
87
86
|
```
|
88
87
|
|
89
|
-
###Supported ORMs
|
88
|
+
### Supported ORMs
|
90
89
|
|
91
|
-
####ActiveRecord
|
90
|
+
#### ActiveRecord
|
92
91
|
|
93
92
|
The integration will look as follows:
|
94
93
|
|
@@ -103,7 +102,7 @@ class Pin < ActiveRecord::Base
|
|
103
102
|
end
|
104
103
|
```
|
105
104
|
|
106
|
-
####Sequel
|
105
|
+
#### Sequel
|
107
106
|
|
108
107
|
Please, use Sequel `~4`.
|
109
108
|
|
@@ -321,7 +320,7 @@ StreamRails.feed_manager.follow_user(user_id, target_id)
|
|
321
320
|
|
322
321
|
### Showing the newsfeed
|
323
322
|
|
324
|
-
####Activity enrichment
|
323
|
+
#### Activity enrichment
|
325
324
|
|
326
325
|
When you read data from feeds, a pin activity will look like this:
|
327
326
|
|
@@ -329,7 +328,8 @@ When you read data from feeds, a pin activity will look like this:
|
|
329
328
|
{"actor": "User:1", "verb": "like", "object": "Item:42"}
|
330
329
|
```
|
331
330
|
|
332
|
-
This is far from ready for usage in your template. We call the process of loading the references from the database
|
331
|
+
This is far from ready for usage in your template. We call the process of loading the references from the database
|
332
|
+
enrichment. An example is shown below:
|
333
333
|
|
334
334
|
```ruby
|
335
335
|
enricher = StreamRails::Enrich.new
|
@@ -339,7 +339,56 @@ results = feed.get()['results']
|
|
339
339
|
activities = enricher.enrich_activities(results)
|
340
340
|
```
|
341
341
|
|
342
|
-
|
342
|
+
If you have additional metadata in your activity (by overriding `activity_extra_data` in the class where you add the
|
343
|
+
Stream Activity mixin), you can also enrich that field's data by doing the following:
|
344
|
+
|
345
|
+
Step One: override the `activity_extra_data` method from our mixin:
|
346
|
+
```ruby
|
347
|
+
class Pin < ActiveRecord::Base
|
348
|
+
include StreamRails::Activity
|
349
|
+
as_activity
|
350
|
+
|
351
|
+
attr_accessor :extra_data
|
352
|
+
|
353
|
+
def activity_object
|
354
|
+
self.item
|
355
|
+
end
|
356
|
+
|
357
|
+
# override this method to add metadata to your activity
|
358
|
+
def activity_extra_data
|
359
|
+
@extra_data
|
360
|
+
end
|
361
|
+
end
|
362
|
+
```
|
363
|
+
|
364
|
+
Now we'll create a 'pin' object which has a `location` metadata field. In this example, we will also have a
|
365
|
+
`location` table and model, and we set up our metadata in the `extra_data` field. It is important that the
|
366
|
+
symbol of the metadata as well as the value of the meta data match this pattern. The left half of the
|
367
|
+
`string:string` metadata value when split on `:` must also match the name of the model.
|
368
|
+
|
369
|
+
We must also tell the enricher to also fetch locations when looking through our activities
|
370
|
+
|
371
|
+
```ruby
|
372
|
+
boulder = Location.new
|
373
|
+
boulder.name = "Boulder, CO"
|
374
|
+
boulder.save!
|
375
|
+
|
376
|
+
# tell the enricher to also do a lookup on the `location` model
|
377
|
+
enricher.add_fields([:location])
|
378
|
+
|
379
|
+
pin = Pin.new
|
380
|
+
pin.user = @tom
|
381
|
+
pin.extra_data = {:location => "location:#{@boulder.id}"}
|
382
|
+
```
|
383
|
+
|
384
|
+
When we retrieve the activity later, the enrichment process will include our `location` model as well, giving us
|
385
|
+
access to attributes and methods of the location model:
|
386
|
+
```ruby
|
387
|
+
place = activity[:location].name
|
388
|
+
# Boulder, CO
|
389
|
+
```
|
390
|
+
|
391
|
+
#### Templating
|
343
392
|
|
344
393
|
Now that you've enriched the activities you can render them in a view.
|
345
394
|
For convenience we include a basic view:
|
@@ -47,7 +47,7 @@ module StreamRails
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def activity_object
|
50
|
-
|
50
|
+
raise NotImplementedError, "Activity models must define `#activity_object` - missing on `#{self.class}`"
|
51
51
|
end
|
52
52
|
|
53
53
|
def activity_target
|
@@ -70,8 +70,7 @@ module StreamRails
|
|
70
70
|
StreamRails.create_reference(activity_target) if activity_target
|
71
71
|
end
|
72
72
|
|
73
|
-
def activity_notify
|
74
|
-
end
|
73
|
+
def activity_notify; end
|
75
74
|
|
76
75
|
def activity_extra_data
|
77
76
|
{}
|
@@ -95,7 +94,7 @@ module StreamRails
|
|
95
94
|
time: activity_time
|
96
95
|
}
|
97
96
|
activity[:to] = activity_notify.map(&:id) unless activity_notify.nil?
|
98
|
-
activity.merge(activity_extra_data)
|
97
|
+
activity.merge(activity_extra_data) if activity_extra_data != nil
|
99
98
|
end
|
100
99
|
end
|
101
100
|
end
|
data/lib/stream_rails/enrich.rb
CHANGED
@@ -15,7 +15,7 @@ module StreamRails
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def enriched?
|
18
|
-
@failed_to_enrich.keys.length
|
18
|
+
@failed_to_enrich.keys.length.zero?
|
19
19
|
end
|
20
20
|
|
21
21
|
def not_enriched_fields
|
@@ -28,10 +28,16 @@ module StreamRails
|
|
28
28
|
end
|
29
29
|
|
30
30
|
class Enrich
|
31
|
+
attr_reader :fields
|
32
|
+
|
31
33
|
def initialize(fields = nil)
|
32
34
|
@fields = fields || [:actor, :object, :target]
|
33
35
|
end
|
34
36
|
|
37
|
+
def add_fields(new_fields)
|
38
|
+
new_fields.each { |i| @fields << i }
|
39
|
+
end
|
40
|
+
|
35
41
|
def model_field?(field_value)
|
36
42
|
return false unless field_value.respond_to?('split')
|
37
43
|
bits = field_value.split(':')
|
@@ -68,7 +74,7 @@ module StreamRails
|
|
68
74
|
model_refs = Hash.new { |h, k| h[k] = {} }
|
69
75
|
activities.each do |activity|
|
70
76
|
activity.select { |k, _v| @fields.include? k.to_sym }.each do |_field, value|
|
71
|
-
next unless
|
77
|
+
next unless model_field?(value)
|
72
78
|
model, id = value.split(':')
|
73
79
|
model_refs[model][id] = 0
|
74
80
|
end
|
@@ -83,7 +89,7 @@ module StreamRails
|
|
83
89
|
def inject_objects(activities, objects)
|
84
90
|
create_activity_results(activities).each do |activity|
|
85
91
|
activity.select { |k, _v| @fields.include? k.to_sym }.each do |field, value|
|
86
|
-
next unless
|
92
|
+
next unless model_field?(value)
|
87
93
|
model, id = value.split(':')
|
88
94
|
activity[field] = objects[model][id] || value
|
89
95
|
activity.track_not_enriched_field(field, value) if objects[model][id].nil?
|
@@ -12,7 +12,7 @@ module StreamRails
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
else
|
15
|
-
|
15
|
+
raise 'Your ORM is not supported'
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -38,7 +38,7 @@ module StreamRails
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
else
|
41
|
-
|
41
|
+
raise 'Your ORM is not supported'
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
data/lib/stream_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stream_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tommaso Barbugli
|
8
|
+
- Ian Douglas
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2016-
|
12
|
+
date: 2016-12-27 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: actionpack
|
@@ -28,16 +29,16 @@ dependencies:
|
|
28
29
|
name: railties
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
|
-
- - "
|
32
|
+
- - "~>"
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.0
|
34
|
+
version: '3.0'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
|
-
- - "
|
39
|
+
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.0
|
41
|
+
version: '3.0'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: stream-ruby
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,44 +71,44 @@ dependencies:
|
|
70
71
|
name: rake
|
71
72
|
requirement: !ruby/object:Gem::Requirement
|
72
73
|
requirements:
|
73
|
-
- - "
|
74
|
+
- - "~>"
|
74
75
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
76
|
+
version: 10.5.0
|
76
77
|
type: :development
|
77
78
|
prerelease: false
|
78
79
|
version_requirements: !ruby/object:Gem::Requirement
|
79
80
|
requirements:
|
80
|
-
- - "
|
81
|
+
- - "~>"
|
81
82
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
+
version: 10.5.0
|
83
84
|
- !ruby/object:Gem::Dependency
|
84
85
|
name: fakeweb
|
85
86
|
requirement: !ruby/object:Gem::Requirement
|
86
87
|
requirements:
|
87
|
-
- - "
|
88
|
+
- - "~>"
|
88
89
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
+
version: 1.3.0
|
90
91
|
type: :development
|
91
92
|
prerelease: false
|
92
93
|
version_requirements: !ruby/object:Gem::Requirement
|
93
94
|
requirements:
|
94
|
-
- - "
|
95
|
+
- - "~>"
|
95
96
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
+
version: 1.3.0
|
97
98
|
- !ruby/object:Gem::Dependency
|
98
99
|
name: sqlite3
|
99
100
|
requirement: !ruby/object:Gem::Requirement
|
100
101
|
requirements:
|
101
|
-
- - "
|
102
|
+
- - "~>"
|
102
103
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
104
|
+
version: 1.3.12
|
104
105
|
type: :development
|
105
106
|
prerelease: false
|
106
107
|
version_requirements: !ruby/object:Gem::Requirement
|
107
108
|
requirements:
|
108
|
-
- - "
|
109
|
+
- - "~>"
|
109
110
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
+
version: 1.3.12
|
111
112
|
- !ruby/object:Gem::Dependency
|
112
113
|
name: rspec
|
113
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,7 +152,7 @@ dependencies:
|
|
151
152
|
- !ruby/object:Gem::Version
|
152
153
|
version: '4.29'
|
153
154
|
description:
|
154
|
-
email:
|
155
|
+
email: support@getstream.io
|
155
156
|
executables: []
|
156
157
|
extensions: []
|
157
158
|
extra_rdoc_files:
|
@@ -191,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
192
|
version: '0'
|
192
193
|
requirements: []
|
193
194
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.6.6
|
195
196
|
signing_key:
|
196
197
|
specification_version: 4
|
197
198
|
summary: A gem that provides a client interface for getstream.io
|