stream_rails 2.6.2 → 3.0.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 +4 -4
- data/LICENSE +1 -1
- data/README.md +66 -32
- data/lib/stream_rails/activity.rb +5 -5
- data/lib/stream_rails/enrich.rb +20 -12
- data/lib/stream_rails/feed_manager.rb +5 -1
- data/lib/stream_rails/logger.rb +1 -1
- data/lib/stream_rails/renderable.rb +8 -8
- data/lib/stream_rails/sync_policies.rb +2 -2
- data/lib/stream_rails/version.rb +1 -1
- metadata +30 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12af4b32dde33e9df2997ad8d9e92d7e1c912478d72db04bf949377dbe56646a
|
4
|
+
data.tar.gz: b6619f2ecaf1fb5b21251eec60b117386dfbc4622ffe1a71a5164506d172d809
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bd338ff891bca9426862b0996b19e6beca617662597b8b66c71995895a64a6aadb986f27c539a49e9fdf33bb5b9688f5f7393a37edd03d2eb56b2892047232b
|
7
|
+
data.tar.gz: 328cd1ce3ba75efefcfdf21828c2608dcd1c63428a238c9c647e21b612a567b1d23c810f8a79d08d51754cc48241076a3c0421d9ed3eb0cc0128e6d71ee338b1
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1
|
-
Stream Rails
|
2
|
-
============
|
1
|
+
# Stream Rails
|
3
2
|
|
4
|
-
[](https://github.com/GetStream/stream-rails/actions)
|
5
4
|
[](http://badge.fury.io/rb/stream_rails)
|
6
5
|
|
7
6
|
[stream-rails](https://github.com/GetStream/stream-rails) is a Ruby on Rails client for [Stream](https://getstream.io/).
|
@@ -16,11 +15,11 @@ Note there is also a lower level [Ruby - Stream integration](https://github.com/
|
|
16
15
|
|
17
16
|
What you can build:
|
18
17
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
- Activity streams such as seen on Github
|
19
|
+
- A twitter style newsfeed
|
20
|
+
- A feed like instagram/ pinterest
|
21
|
+
- Facebook style newsfeeds
|
22
|
+
- A notification system
|
24
23
|
|
25
24
|
### Demo
|
26
25
|
|
@@ -54,7 +53,7 @@ You can check out our example app built using this library on Github [https://gi
|
|
54
53
|
|
55
54
|
### Gem installation
|
56
55
|
|
57
|
-
You can install
|
56
|
+
You can install `stream_rails` as you would any other gem:
|
58
57
|
|
59
58
|
```
|
60
59
|
gem install stream_rails
|
@@ -67,17 +66,17 @@ gem 'stream_rails'
|
|
67
66
|
```
|
68
67
|
|
69
68
|
This library is tested against and fully supports the following Rails versions:
|
70
|
-
|
71
|
-
- 4.0
|
72
|
-
- 4.2
|
69
|
+
|
73
70
|
- 5.0
|
74
71
|
- 5.2
|
72
|
+
- 6.0
|
73
|
+
- 6.1
|
75
74
|
|
76
75
|
### Setup
|
77
76
|
|
78
|
-
Login with Github on getstream.io and get your
|
77
|
+
Login with Github on getstream.io and get your `api_key` and `api_secret` from your app configuration (Dashboard screen).
|
79
78
|
|
80
|
-
Then you can add the StreamRails configuration in
|
79
|
+
Then you can add the StreamRails configuration in `config/initializers/stream_rails.rb`
|
81
80
|
|
82
81
|
```ruby
|
83
82
|
require 'stream_rails'
|
@@ -87,7 +86,7 @@ StreamRails.configure do |config|
|
|
87
86
|
config.api_secret = "YOUR API SECRET"
|
88
87
|
config.timeout = 30 # Optional, defaults to 3
|
89
88
|
config.location = 'us-east' # Optional, defaults to 'us-east'
|
90
|
-
config.api_hostname = 'stream-io-api.com' # Optional, defaults to 'stream-io-api.com'
|
89
|
+
config.api_hostname = 'stream-io-api.com' # Optional, defaults to 'stream-io-api.com'
|
91
90
|
# If you use custom feed names, e.g.: timeline_flat, timeline_aggregated,
|
92
91
|
# use this, otherwise omit:
|
93
92
|
config.news_feeds = { flat: "timeline_flat", aggregated: "timeline_aggregated" }
|
@@ -152,14 +151,41 @@ class Pin < ActiveRecord::Base
|
|
152
151
|
|
153
152
|
end
|
154
153
|
```
|
155
|
-
|
154
|
+
|
155
|
+
Everytime a Pin is created it will be stored in the feed of the user that created it. When a Pin instance is deleted, the feed will be removed as well.
|
156
156
|
|
157
157
|
#### Activity fields
|
158
158
|
|
159
|
-
ActiveRecord models are stored in your feeds as activities; Activities are objects that tell the story of a person performing an action on or with an object, in its simplest form, an activity consists of an actor, a verb, and an object. In order for this to happen your models need to implement
|
159
|
+
ActiveRecord models are stored in your feeds as activities; Activities are objects that tell the story of a person performing an action on or with an object, in its simplest form, an activity consists of an actor, a verb, and an object. In order for this to happen your models need to implement these methods:
|
160
160
|
|
161
161
|
**#activity_object** the object of the activity (eg. an AR model instance)
|
162
|
-
|
162
|
+
|
163
|
+
**#activity_actor** the actor performing the activity -- this value also provides the feed name and feed ID to which the activity will be added.
|
164
|
+
|
165
|
+
For example, let's say a Pin was a polymorphic class that could belong to either a user (e.g. `User` ID: 1) or a company (e.g. `Company` ID: 1). In that instance, the below code would post the pin either to the `user:1` feed or the `company:1` feed based on its owner.
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
class Pin < ActiveRecord::Base
|
169
|
+
belongs_to :owner, :polymorphic => true
|
170
|
+
belongs_to :item
|
171
|
+
|
172
|
+
include StreamRails::Activity
|
173
|
+
as_activity
|
174
|
+
|
175
|
+
def activity_actor
|
176
|
+
self.owner
|
177
|
+
end
|
178
|
+
|
179
|
+
def activity_object
|
180
|
+
self.item
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
```
|
185
|
+
|
186
|
+
The `activity_actor` defaults to `self.user`
|
187
|
+
|
188
|
+
|
163
189
|
**#activity_verb** the string representation of the verb (defaults to model class name)
|
164
190
|
|
165
191
|
Here's a more complete example of the Pin class:
|
@@ -185,8 +211,7 @@ end
|
|
185
211
|
|
186
212
|
#### Activity extra data
|
187
213
|
|
188
|
-
Often you'll want to store more data than just the basic fields. You achieve this by implementing
|
189
|
-
|
214
|
+
Often you'll want to store more data than just the basic fields. You achieve this by implementing `#activity_extra_data` in your model.
|
190
215
|
|
191
216
|
```ruby
|
192
217
|
class Pin < ActiveRecord::Base
|
@@ -210,7 +235,7 @@ end
|
|
210
235
|
#### Activity creation
|
211
236
|
|
212
237
|
If you want to control when to create an activity you should implement
|
213
|
-
the
|
238
|
+
the `#activity_should_sync?` method in your model.
|
214
239
|
|
215
240
|
```ruby
|
216
241
|
class Pin < ActiveRecord::Base
|
@@ -235,7 +260,7 @@ This will create an activity only when `self.published` is true.
|
|
235
260
|
|
236
261
|
### Feed manager
|
237
262
|
|
238
|
-
|
263
|
+
`stream_rails` comes with a Feed Manager class that helps with all common feed operations. You can get an instance of the manager with `StreamRails.feed_manager`.
|
239
264
|
|
240
265
|
```ruby
|
241
266
|
feed = StreamRails.feed_manager.get_user_feed(current_user.id)
|
@@ -247,12 +272,15 @@ To get you started the manager has 4 feeds pre-configured. You can add more feed
|
|
247
272
|
Feeds are divided into three categories.
|
248
273
|
|
249
274
|
##### User feed:
|
275
|
+
|
250
276
|
The user feed stores all activities for a user. Think of it as your personal Facebook page. You can easily get this feed from the manager.
|
277
|
+
|
251
278
|
```ruby
|
252
279
|
feed = StreamRails.feed_manager.get_user_feed(current_user.id)
|
253
280
|
```
|
254
281
|
|
255
282
|
##### News feeds:
|
283
|
+
|
256
284
|
News feeds store activities from the people you follow.
|
257
285
|
There is both a flat newsfeed (similar to twitter) and an aggregated newsfeed (like facebook).
|
258
286
|
|
@@ -262,15 +290,18 @@ aggregated_feed = StreamRails.feed_manager.get_news_feeds(current_user.id)[:aggr
|
|
262
290
|
```
|
263
291
|
|
264
292
|
##### Notification feed:
|
293
|
+
|
265
294
|
The notification feed can be used to build notification functionality.
|
266
295
|
|
267
296
|

|
268
297
|
|
269
298
|
Below we show an example of how you can read the notification feed.
|
299
|
+
|
270
300
|
```ruby
|
271
301
|
notification_feed = StreamRails.feed_manager.get_notification_feed(current_user.id)
|
272
302
|
|
273
303
|
```
|
304
|
+
|
274
305
|
By default the notification feed will be empty. You can specify which users to notify when your model gets created. In the case of a retweet you probably want to notify the user of the parent tweet.
|
275
306
|
|
276
307
|
```ruby
|
@@ -337,11 +368,11 @@ StreamRails.feed_manager.follow_user(user_id, target_id)
|
|
337
368
|
When you read data from feeds, a pin activity will look like this:
|
338
369
|
|
339
370
|
```json
|
340
|
-
{"actor": "User:1", "verb": "like", "object": "Item:42"}
|
371
|
+
{ "actor": "User:1", "verb": "like", "object": "Item:42" }
|
341
372
|
```
|
342
373
|
|
343
374
|
This is far from ready for usage in your template. We call the process of loading the references from the database
|
344
|
-
enrichment. An example is shown below:
|
375
|
+
"enrichment." An example is shown below:
|
345
376
|
|
346
377
|
```ruby
|
347
378
|
enricher = StreamRails::Enrich.new
|
@@ -350,7 +381,9 @@ feed = StreamRails.feed_manager.get_news_feeds(current_user.id)[:flat]
|
|
350
381
|
results = feed.get()['results']
|
351
382
|
activities = enricher.enrich_activities(results)
|
352
383
|
```
|
353
|
-
|
384
|
+
|
385
|
+
A similar method called `enrich_aggregated_activities` is available for aggregated feeds.
|
386
|
+
|
354
387
|
```ruby
|
355
388
|
enricher = StreamRails::Enrich.new
|
356
389
|
|
@@ -363,6 +396,7 @@ If you have additional metadata in your activity (by overriding `activity_extra_
|
|
363
396
|
Stream Activity mixin), you can also enrich that field's data by doing the following:
|
364
397
|
|
365
398
|
Step One: override the `activity_extra_data` method from our mixin:
|
399
|
+
|
366
400
|
```ruby
|
367
401
|
class Pin < ActiveRecord::Base
|
368
402
|
include StreamRails::Activity
|
@@ -403,6 +437,7 @@ pin.extra_data = {:location => "location:#{boulder.id}"}
|
|
403
437
|
|
404
438
|
When we retrieve the activity later, the enrichment process will include our `location` model as well, giving us
|
405
439
|
access to attributes and methods of the location model:
|
440
|
+
|
406
441
|
```ruby
|
407
442
|
place = activity[:location].name
|
408
443
|
# Boulder, CO
|
@@ -423,18 +458,17 @@ For convenience we include a basic view:
|
|
423
458
|
</div>
|
424
459
|
```
|
425
460
|
|
426
|
-
The
|
427
|
-
|
428
|
-
The helper will automatically send ```activity``` to the local scope of the partial; additional parameters can be send as well as use different layouts, and prefix the name
|
461
|
+
The `render_activity` view helper will render the activity by picking the partial `activity/_pin` for a pin activity, `aggregated_activity/_follow` for an aggregated activity with verb follow.
|
429
462
|
|
463
|
+
The helper will automatically send `activity` to the local scope of the partial; additional parameters can be sent as well as use different layouts, and prefix the name
|
430
464
|
|
431
|
-
e.g. renders the activity partial using the
|
465
|
+
e.g. renders the activity partial using the `small_activity` layout:
|
432
466
|
|
433
467
|
```
|
434
468
|
<%= render_activity activity, :layout => "small_activity" %>
|
435
469
|
```
|
436
470
|
|
437
|
-
e.g. prefixes the name of the template with "
|
471
|
+
e.g. prefixes the name of the template with "notification\_":
|
438
472
|
|
439
473
|
```
|
440
474
|
<%= render_activity activity, :prefix => "notification_" %>
|
@@ -482,10 +516,10 @@ From the project root directory:
|
|
482
516
|
|
483
517
|
### Full documentation and Low level APIs access
|
484
518
|
|
485
|
-
When needed you can also use the [low level Ruby API](https://github.com/getstream/stream-ruby) directly. Documentation is available at the [Stream website](https://getstream.io/docs/?language=ruby).
|
519
|
+
When needed you can also use the [low level Ruby API](https://github.com/getstream/stream-ruby) directly. Documentation is available at the [Stream website](https://getstream.io/activity-feeds/docs/?language=ruby).
|
486
520
|
|
487
521
|
### Copyright and License Information
|
488
522
|
|
489
|
-
Copyright (c) 2014-
|
523
|
+
Copyright (c) 2014-2021 Stream.io Inc, and individual contributors. All rights reserved.
|
490
524
|
|
491
525
|
See the file "LICENSE" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
|
@@ -7,7 +7,7 @@ module StreamRails
|
|
7
7
|
if record.is_a?(ActiveRecord::Base) || (Object.const_defined?('Sequel') && record.is_a?(Sequel::Model))
|
8
8
|
"#{record.class.model_name}:#{record.id}"
|
9
9
|
else
|
10
|
-
record
|
10
|
+
record&.to_s
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -39,7 +39,7 @@ module StreamRails
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def activity_owner_feed
|
42
|
-
|
42
|
+
activity_actor.class.name.downcase
|
43
43
|
end
|
44
44
|
|
45
45
|
def activity_actor_id
|
@@ -93,9 +93,9 @@ module StreamRails
|
|
93
93
|
target: activity_target_id,
|
94
94
|
time: activity_time
|
95
95
|
}
|
96
|
-
|
97
|
-
activity.
|
98
|
-
activity
|
96
|
+
arr = activity_notify
|
97
|
+
activity[:to] = arr.map(&:id) unless arr.nil?
|
98
|
+
activity.merge!(activity_extra_data || {})
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
data/lib/stream_rails/enrich.rb
CHANGED
@@ -10,8 +10,8 @@ module StreamRails
|
|
10
10
|
super
|
11
11
|
end
|
12
12
|
|
13
|
-
def from_activity(
|
14
|
-
merge(
|
13
|
+
def from_activity(from)
|
14
|
+
merge(from)
|
15
15
|
end
|
16
16
|
|
17
17
|
def enriched?
|
@@ -31,7 +31,7 @@ module StreamRails
|
|
31
31
|
attr_reader :fields
|
32
32
|
|
33
33
|
def initialize(fields = nil)
|
34
|
-
@fields = fields || [
|
34
|
+
@fields = fields || %i[actor object target]
|
35
35
|
end
|
36
36
|
|
37
37
|
def add_fields(new_fields)
|
@@ -40,14 +40,16 @@ module StreamRails
|
|
40
40
|
|
41
41
|
def model_field?(field_value)
|
42
42
|
return false unless field_value.respond_to?('split')
|
43
|
-
|
44
|
-
|
43
|
+
|
44
|
+
model, _, id = field_value.rpartition(':')
|
45
|
+
return false unless model.present? && id.present?
|
46
|
+
|
45
47
|
begin
|
46
|
-
|
48
|
+
model.classify.constantize
|
47
49
|
rescue NameError
|
48
|
-
|
50
|
+
false
|
49
51
|
else
|
50
|
-
|
52
|
+
true
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
@@ -75,7 +77,8 @@ module StreamRails
|
|
75
77
|
activities.each do |activity|
|
76
78
|
activity.select { |k, _v| @fields.include? k.to_sym }.each do |_field, value|
|
77
79
|
next unless model_field?(value)
|
78
|
-
|
80
|
+
|
81
|
+
model, _, id = value.rpartition(':')
|
79
82
|
model_refs[model][id] = 0
|
80
83
|
end
|
81
84
|
end
|
@@ -83,14 +86,19 @@ module StreamRails
|
|
83
86
|
end
|
84
87
|
|
85
88
|
def retrieve_objects(references)
|
86
|
-
|
89
|
+
references.map do |model, ids|
|
90
|
+
[model, model.classify.constantize.where(model.classify.constantize.primary_key => ids.keys).map do |i|
|
91
|
+
[i.id.to_s, i]
|
92
|
+
end.to_h]
|
93
|
+
end.to_h
|
87
94
|
end
|
88
95
|
|
89
96
|
def inject_objects(activities, objects)
|
90
97
|
create_activity_results(activities).each do |activity|
|
91
98
|
activity.select { |k, _v| @fields.include? k.to_sym }.each do |field, value|
|
92
99
|
next unless model_field?(value)
|
93
|
-
|
100
|
+
|
101
|
+
model, _, id = value.rpartition(':')
|
94
102
|
activity[field] = objects[model][id] || value
|
95
103
|
activity.track_not_enriched_field(field, value) if objects[model][id].nil?
|
96
104
|
end
|
@@ -100,7 +108,7 @@ module StreamRails
|
|
100
108
|
private
|
101
109
|
|
102
110
|
def create_activity_results(activities)
|
103
|
-
|
111
|
+
activities.map { |a| ActivityResult.new.from_activity(a) }
|
104
112
|
end
|
105
113
|
end
|
106
114
|
end
|
@@ -15,7 +15,7 @@ module StreamRails
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def get_news_feeds(user_id)
|
18
|
-
|
18
|
+
@news_feeds.transform_values { |feed_slug| get_feed(feed_slug, user_id) }
|
19
19
|
end
|
20
20
|
|
21
21
|
def get_notification_feed(user_id)
|
@@ -28,6 +28,7 @@ module StreamRails
|
|
28
28
|
|
29
29
|
def follow_user(user_id, target_id)
|
30
30
|
return unless StreamRails.enabled?
|
31
|
+
|
31
32
|
target_feed = get_user_feed(target_id)
|
32
33
|
@news_feeds.each do |_, feed|
|
33
34
|
news_feed = get_feed(feed, user_id)
|
@@ -37,6 +38,7 @@ module StreamRails
|
|
37
38
|
|
38
39
|
def unfollow_user(user_id, target_id)
|
39
40
|
return unless StreamRails.enabled?
|
41
|
+
|
40
42
|
target_feed = get_user_feed(target_id)
|
41
43
|
@news_feeds.each do |_, feed|
|
42
44
|
news_feed = get_feed(feed, user_id)
|
@@ -50,6 +52,7 @@ module StreamRails
|
|
50
52
|
|
51
53
|
def created_activity(instance)
|
52
54
|
return unless StreamRails.enabled? && instance.activity_should_sync?
|
55
|
+
|
53
56
|
activity = instance.create_activity
|
54
57
|
feed = get_owner_feed(instance)
|
55
58
|
feed.add_activity(activity)
|
@@ -57,6 +60,7 @@ module StreamRails
|
|
57
60
|
|
58
61
|
def destroyed_activity(instance)
|
59
62
|
return unless StreamRails.enabled?
|
63
|
+
|
60
64
|
feed = get_owner_feed(instance)
|
61
65
|
feed.remove(instance.activity_foreign_id, true)
|
62
66
|
end
|
data/lib/stream_rails/logger.rb
CHANGED
@@ -20,17 +20,17 @@ module StreamRails
|
|
20
20
|
context.render params
|
21
21
|
else
|
22
22
|
StreamRails.logger.warn "trying to display a non enriched activity #{activity.inspect} #{activity.failed_to_enrich}"
|
23
|
-
|
23
|
+
''
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
def render_aggregated(activity, context, params)
|
28
|
-
if
|
29
|
-
context.render params
|
30
|
-
else
|
28
|
+
if activity['activities'].map { |a| !a.enriched? }.all?
|
31
29
|
first_activity = activity['activities'][0]
|
32
30
|
StreamRails.logger.warn "trying to display a non enriched activity #{first_activity.inspect} #{first_activity.failed_to_enrich}"
|
33
|
-
|
31
|
+
''
|
32
|
+
else
|
33
|
+
context.render params
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -42,7 +42,7 @@ module StreamRails
|
|
42
42
|
|
43
43
|
def partial_path(activity, aggregated, prefix = '', path = nil, root = nil)
|
44
44
|
root ||= (aggregated ? 'aggregated_activity' : 'activity')
|
45
|
-
path ||=
|
45
|
+
path ||= (activity['verb']).to_s.downcase
|
46
46
|
path = "#{prefix}_#{path}" if prefix
|
47
47
|
select_path path, root
|
48
48
|
end
|
@@ -50,8 +50,8 @@ module StreamRails
|
|
50
50
|
def prepare_locals(activity, params)
|
51
51
|
locals = params.delete(:locals) || {}
|
52
52
|
locals.merge\
|
53
|
-
activity:
|
54
|
-
parameters:
|
53
|
+
activity: activity,
|
54
|
+
parameters: params
|
55
55
|
end
|
56
56
|
|
57
57
|
private
|
@@ -28,8 +28,8 @@ module StreamRails
|
|
28
28
|
|
29
29
|
module SyncDestroy
|
30
30
|
def self.included(base)
|
31
|
-
if base.respond_to? :
|
32
|
-
base.
|
31
|
+
if base.respond_to? :before_destroy
|
32
|
+
base.before_destroy :remove_from_feed
|
33
33
|
elsif Object.const_defined?('Sequel') && base < Sequel::Model
|
34
34
|
base.instance_eval do
|
35
35
|
define_method(:before_destroy) do |*args|
|
data/lib/stream_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stream_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tommaso Barbugli
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-03-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: actionpack
|
@@ -18,62 +18,56 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: 5.0.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version:
|
28
|
+
version: 5.0.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
30
|
+
name: activerecord
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: 5.0.0
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: 5.0.0
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
|
-
name:
|
44
|
+
name: railties
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "~>"
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '2.6'
|
50
47
|
- - ">="
|
51
48
|
- !ruby/object:Gem::Version
|
52
|
-
version:
|
49
|
+
version: 5.0.0
|
53
50
|
type: :runtime
|
54
51
|
prerelease: false
|
55
52
|
version_requirements: !ruby/object:Gem::Requirement
|
56
53
|
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '2.6'
|
60
54
|
- - ">="
|
61
55
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
56
|
+
version: 5.0.0
|
63
57
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
58
|
+
name: stream-ruby
|
65
59
|
requirement: !ruby/object:Gem::Requirement
|
66
60
|
requirements:
|
67
|
-
- - "
|
61
|
+
- - "~>"
|
68
62
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
63
|
+
version: 4.0.1
|
70
64
|
type: :runtime
|
71
65
|
prerelease: false
|
72
66
|
version_requirements: !ruby/object:Gem::Requirement
|
73
67
|
requirements:
|
74
|
-
- - "
|
68
|
+
- - "~>"
|
75
69
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
70
|
+
version: 4.0.1
|
77
71
|
- !ruby/object:Gem::Dependency
|
78
72
|
name: rake
|
79
73
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,61 +83,61 @@ dependencies:
|
|
89
83
|
- !ruby/object:Gem::Version
|
90
84
|
version: '0'
|
91
85
|
- !ruby/object:Gem::Dependency
|
92
|
-
name:
|
86
|
+
name: rspec
|
93
87
|
requirement: !ruby/object:Gem::Requirement
|
94
88
|
requirements:
|
95
|
-
- - "
|
89
|
+
- - "~>"
|
96
90
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
91
|
+
version: '3.10'
|
98
92
|
type: :development
|
99
93
|
prerelease: false
|
100
94
|
version_requirements: !ruby/object:Gem::Requirement
|
101
95
|
requirements:
|
102
|
-
- - "
|
96
|
+
- - "~>"
|
103
97
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
98
|
+
version: '3.10'
|
105
99
|
- !ruby/object:Gem::Dependency
|
106
|
-
name:
|
100
|
+
name: sequel
|
107
101
|
requirement: !ruby/object:Gem::Requirement
|
108
102
|
requirements:
|
109
103
|
- - "~>"
|
110
104
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
105
|
+
version: '4.49'
|
112
106
|
type: :development
|
113
107
|
prerelease: false
|
114
108
|
version_requirements: !ruby/object:Gem::Requirement
|
115
109
|
requirements:
|
116
110
|
- - "~>"
|
117
111
|
- !ruby/object:Gem::Version
|
118
|
-
version: '
|
112
|
+
version: '4.49'
|
119
113
|
- !ruby/object:Gem::Dependency
|
120
114
|
name: simplecov
|
121
115
|
requirement: !ruby/object:Gem::Requirement
|
122
116
|
requirements:
|
123
117
|
- - "~>"
|
124
118
|
- !ruby/object:Gem::Version
|
125
|
-
version: 0.
|
119
|
+
version: 0.16.1
|
126
120
|
type: :development
|
127
121
|
prerelease: false
|
128
122
|
version_requirements: !ruby/object:Gem::Requirement
|
129
123
|
requirements:
|
130
124
|
- - "~>"
|
131
125
|
- !ruby/object:Gem::Version
|
132
|
-
version: 0.
|
126
|
+
version: 0.16.1
|
133
127
|
- !ruby/object:Gem::Dependency
|
134
|
-
name:
|
128
|
+
name: sqlite3
|
135
129
|
requirement: !ruby/object:Gem::Requirement
|
136
130
|
requirements:
|
137
131
|
- - "~>"
|
138
132
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
133
|
+
version: 1.3.13
|
140
134
|
type: :development
|
141
135
|
prerelease: false
|
142
136
|
version_requirements: !ruby/object:Gem::Requirement
|
143
137
|
requirements:
|
144
138
|
- - "~>"
|
145
139
|
- !ruby/object:Gem::Version
|
146
|
-
version:
|
140
|
+
version: 1.3.13
|
147
141
|
description:
|
148
142
|
email: support@getstream.io
|
149
143
|
executables: []
|
@@ -177,15 +171,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
177
171
|
requirements:
|
178
172
|
- - ">="
|
179
173
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
174
|
+
version: 2.5.5
|
181
175
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
176
|
requirements:
|
183
177
|
- - ">="
|
184
178
|
- !ruby/object:Gem::Version
|
185
179
|
version: '0'
|
186
180
|
requirements: []
|
187
|
-
|
188
|
-
rubygems_version: 2.7.3
|
181
|
+
rubygems_version: 3.1.2
|
189
182
|
signing_key:
|
190
183
|
specification_version: 4
|
191
184
|
summary: A gem that provides a client interface for getstream.io
|