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 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