stream_rails 2.6.2 → 3.0.0

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
  SHA256:
3
- metadata.gz: c54b579f0190e13effdd0bf431cb72c10da1cb29bcf480c9fb576324d5f16968
4
- data.tar.gz: fb38ca708f49735545db3d4babcb3f66544b0d1603c408ad4366cc2567d062ab
3
+ metadata.gz: 12af4b32dde33e9df2997ad8d9e92d7e1c912478d72db04bf949377dbe56646a
4
+ data.tar.gz: b6619f2ecaf1fb5b21251eec60b117386dfbc4622ffe1a71a5164506d172d809
5
5
  SHA512:
6
- metadata.gz: 9e73e7b0f211f5571ae0992dbc9b90bf150d63fa35b7ffb3b15e52babdc4e4df4ed81707bf8ef1cf3b41be26da87d6377940d5f901f31160a9d71628d84267ea
7
- data.tar.gz: 7699314f3e562ac9c346ff7510d4815623a62edff0f57a5e21131413f73dd9919c2fe3fc2efef8682769e5f9f31e26590cbc2227790aadc0b64746f98fde5897
6
+ metadata.gz: 4bd338ff891bca9426862b0996b19e6beca617662597b8b66c71995895a64a6aadb986f27c539a49e9fdf33bb5b9688f5f7393a37edd03d2eb56b2892047232b
7
+ data.tar.gz: 328cd1ce3ba75efefcfdf21828c2608dcd1c63428a238c9c647e21b612a567b1d23c810f8a79d08d51754cc48241076a3c0421d9ed3eb0cc0128e6d71ee338b1
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2017 Stream.io Inc, and individual contributors.
1
+ Copyright (c) 2014-2021 Stream.io Inc, and individual contributors.
2
2
 
3
3
  All rights reserved.
4
4
 
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
- Stream Rails
2
- ============
1
+ # Stream Rails
3
2
 
4
- [![image](https://secure.travis-ci.org/GetStream/stream-rails.png?branch=master)](http://travis-ci.org/GetStream/stream-rails)
3
+ [![build](https://github.com/GetStream/stream-rails/workflows/build/badge.svg)](https://github.com/GetStream/stream-rails/actions)
5
4
  [![Gem Version](https://badge.fury.io/rb/stream_rails.svg)](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
- * Activity streams such as seen on Github
20
- * A twitter style newsfeed
21
- * A feed like instagram/ pinterest
22
- * Facebook style newsfeeds
23
- * A notification system
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 ```stream_rails``` as you would any other gem:
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
- - 3.x
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 ```api_key``` and ```api_secret``` from your app configuration (Dashboard screen).
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 ```config/initializers/stream_rails.rb```
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
- 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.
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 this methods:
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
- **#activity_actor** the actor performing the activity (defaults to ```self.user```)
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 ```#activity_extra_data``` in your model.
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 ```#activity_should_sync?``` method in your model.
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
- ```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```.
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
  ![Notification feed](http://feedly.readthedocs.org/en/latest/_images/fb_notification_system.png)
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
- A similar method called enrich_aggregated_activities is available for aggregated feeds.
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 ```render_activity``` view helper will render the activity by picking the partial ```activity/_pin``` for a pin activity, ```aggregated/_follow``` for an aggregated activity with verb follow.
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 ```small_activity``` layout:
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 "notification_":
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-2017 Stream.io Inc, and individual contributors. All rights reserved.
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.to_s unless record.nil?
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
- 'user'
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
- activity[:to] = activity_notify.map(&:id) unless activity_notify.nil?
97
- activity.merge!(activity_extra_data) if activity_extra_data != nil
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
@@ -10,8 +10,8 @@ module StreamRails
10
10
  super
11
11
  end
12
12
 
13
- def from_activity(h)
14
- merge(h)
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 || [:actor, :object, :target]
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
- bits = field_value.split(':')
44
- return false if bits.length < 2
43
+
44
+ model, _, id = field_value.rpartition(':')
45
+ return false unless model.present? && id.present?
46
+
45
47
  begin
46
- bits[0].classify.constantize
48
+ model.classify.constantize
47
49
  rescue NameError
48
- return false
50
+ false
49
51
  else
50
- return true
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
- model, id = value.split(':')
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
- Hash[references.map { |model, ids| [model, Hash[model.classify.constantize.where(id: ids.keys).map { |i| [i.id.to_s, i] }]] }]
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
- model, id = value.split(':')
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
- return activities.map { |a| ActivityResult.new.from_activity(a) }
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
- Hash[@news_feeds.map { |feed_name, feed_slug| [feed_name, get_feed(feed_slug, user_id)] }]
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
@@ -4,5 +4,5 @@ module StreamRails
4
4
  class << self
5
5
  attr_accessor :logger
6
6
  end
7
- self.logger = Logger.new(STDOUT)
7
+ self.logger = Logger.new($stdout)
8
8
  end
@@ -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
- return ''
23
+ ''
24
24
  end
25
25
  end
26
26
 
27
27
  def render_aggregated(activity, context, params)
28
- if !activity['activities'].map { |a| !a.enriched? }.all?
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
- return ''
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 ||= "#{activity['verb']}".downcase
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: activity,
54
- parameters: params
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? :after_commit
32
- base.after_commit :remove_from_feed, on: :destroy
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|
@@ -1,3 +1,3 @@
1
1
  module StreamRails
2
- VERSION = '2.6.2'.freeze
2
+ VERSION = '3.0.0'.freeze
3
3
  end
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: 2.6.2
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: 2018-05-15 00:00:00.000000000 Z
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: 3.0.0
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: 3.0.0
28
+ version: 5.0.0
29
29
  - !ruby/object:Gem::Dependency
30
- name: railties
30
+ name: activerecord
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: 3.0.0
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: 3.0.0
42
+ version: 5.0.0
43
43
  - !ruby/object:Gem::Dependency
44
- name: stream-ruby
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: 2.6.1
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: 2.6.1
56
+ version: 5.0.0
63
57
  - !ruby/object:Gem::Dependency
64
- name: activerecord
58
+ name: stream-ruby
65
59
  requirement: !ruby/object:Gem::Requirement
66
60
  requirements:
67
- - - ">="
61
+ - - "~>"
68
62
  - !ruby/object:Gem::Version
69
- version: 3.0.0
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: 3.0.0
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: sqlite3
86
+ name: rspec
93
87
  requirement: !ruby/object:Gem::Requirement
94
88
  requirements:
95
- - - ">="
89
+ - - "~>"
96
90
  - !ruby/object:Gem::Version
97
- version: '0'
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: '0'
98
+ version: '3.10'
105
99
  - !ruby/object:Gem::Dependency
106
- name: rspec
100
+ name: sequel
107
101
  requirement: !ruby/object:Gem::Requirement
108
102
  requirements:
109
103
  - - "~>"
110
104
  - !ruby/object:Gem::Version
111
- version: '2.10'
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: '2.10'
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.7.1
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.7.1
126
+ version: 0.16.1
133
127
  - !ruby/object:Gem::Dependency
134
- name: sequel
128
+ name: sqlite3
135
129
  requirement: !ruby/object:Gem::Requirement
136
130
  requirements:
137
131
  - - "~>"
138
132
  - !ruby/object:Gem::Version
139
- version: '4.29'
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: '4.29'
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: 1.9.2
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
- rubyforge_project:
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