graphql-anycable 1.1.4 → 1.1.6

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: 8eacc1ccd4d1c59606ade3479520714b0aab25b2107b84d5147cc47c49a692d7
4
- data.tar.gz: e1f4d1342578f7f0f0068ed7047758fc1a358441028407d790da2cc09967fc50
3
+ metadata.gz: 0c3d8264a1ad4045379531d78a2b2d80507c1b37c2e98ca78370182258c20a79
4
+ data.tar.gz: 237d5b34c060675f21b97f0a08a12c70bb94795f08796dfdedc2e01971471ceb
5
5
  SHA512:
6
- metadata.gz: c5c875158053244e4c7d49e5886b771f9ef0a70180b3ed61e5083698ad00bf2ed2cbc62eeca93effaa35a0d034822b4da3b46504619057d5435e9b398145914a
7
- data.tar.gz: b1675532c18609d4bae817292e5604e51ac84d6a327ee84618b3463d0b3a7139f777ece788c503a0226d7c7a184b60950827c687c7cc96c2f3b3dc9d100cde96
6
+ metadata.gz: 4352ab99658356eb39f60048dff9a9a8c7b4968d4b5f50122f6e56534ebbec3f5d1fbd2b320f73b83e5001e0eb1d73904690a03831a8d7a54ef5b38231365fe1
7
+ data.tar.gz: b0fa928b0d187607d25bb6fedf4511bff6288fa6f82a88182bb892ad936922fe569da681ffff227ba88443b43f625e8d8ed007f300a891f39392a747948dd600
@@ -10,7 +10,7 @@ on:
10
10
 
11
11
  jobs:
12
12
  test:
13
- name: "GraphQL-Ruby ${{ matrix.graphql }} on Ruby ${{ matrix.ruby }} (use_client_id: ${{ matrix.client_id }})"
13
+ name: "GraphQL-Ruby ${{ matrix.graphql }} on Ruby ${{ matrix.ruby }} (use_client_id: ${{ matrix.client_id }}) Redis v${{ matrix.redis_version }}"
14
14
  runs-on: ubuntu-latest
15
15
  strategy:
16
16
  fail-fast: false
@@ -20,14 +20,17 @@ jobs:
20
20
  graphql: '~> 2.0.0'
21
21
  client_id: 'false'
22
22
  anycable_rails: '~> 1.3'
23
+ redis_version: latest
23
24
  - ruby: "3.0"
24
25
  graphql: '~> 1.13.0'
25
26
  client_id: 'false'
26
27
  anycable_rails: '~> 1.2.0'
28
+ redis_version: 5.0.4
27
29
  - ruby: 2.7
28
30
  graphql: '~> 1.12.0'
29
31
  client_id: 'true'
30
32
  anycable_rails: '~> 1.1.0'
33
+ redis_version: 4.0.14
31
34
  container:
32
35
  image: ruby:${{ matrix.ruby }}
33
36
  env:
@@ -35,9 +38,18 @@ jobs:
35
38
  GRAPHQL_RUBY_VERSION: ${{ matrix.graphql }}
36
39
  ANYCABLE_RAILS_VERSION: ${{ matrix.anycable_rails }}
37
40
  GRAPHQL_ANYCABLE_USE_CLIENT_PROVIDED_UNIQ_ID: ${{ matrix.client_id }}
41
+ REDIS_URL: redis://redis:6379
42
+ services:
43
+ redis:
44
+ image: redis:${{ matrix.redis_version }}
45
+ options: >-
46
+ --health-cmd "redis-cli ping"
47
+ --health-interval 10s
48
+ --health-timeout 5s
49
+ --health-retries 5
38
50
  steps:
39
- - uses: actions/checkout@v2
40
- - uses: actions/cache@v2
51
+ - uses: actions/checkout@v3
52
+ - uses: actions/cache@v3
41
53
  with:
42
54
  path: vendor/bundle
43
55
  key: bundle-${{ matrix.ruby }}-${{ matrix.graphql }}-${{ matrix.anycable }}-${{ hashFiles('**/*.gemspec') }}-${{ hashFiles('**/Gemfile') }}
data/CHANGELOG.md CHANGED
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
7
7
 
8
8
  ## Unreleased
9
9
 
10
+ ## 1.1.6 - 2023-08-03
11
+
12
+ ### Fixed
13
+
14
+ - Fix empty operation name handling when using redis-client or redis.rb v5. [@ilyasgaraev] ([#34](https://github.com/anycable/graphql-anycable/pull/34))
15
+ - Fix deprecation warnings for redis.rb v4.8+ and support for redis.rb v5. [@smasry] ([#29](https://github.com/anycable/graphql-anycable/pull/29))
16
+
17
+ ## 1.1.5 - 2022-10-26
18
+
19
+ - Fix that deprecation warning about `config.use_client_provided_uniq_id` again, so it can be issued outside of Rails. [@gsamokovarov] ([#27](https://github.com/anycable/graphql-anycable/pull/27))
20
+
10
21
  ## 1.1.4 - 2022-07-28
11
22
 
12
23
  - Fix deprecation warning about using client-side channel ids shown even if deprecated functionality was disabled in application code (not via config file or environment variable). [@gsamokovarov] ([#26](https://github.com/anycable/graphql-anycable/pull/26))
@@ -164,6 +175,8 @@ Technical release to test publishing via GitHub Actions.
164
175
 
165
176
  Initial version: store subscriptions on redis, re-execute queries in sync. [@Envek]
166
177
 
178
+ [@ilyasgaraev]: https://github.com/ilyasgaraev "Ilyas Garaev"
179
+ [@smasry]: https://github.com/smasry "Samer Masry"
167
180
  [@gsamokovarov]: https://github.com/gsamokovarov "Genadi Samokovarov"
168
181
  [@bibendi]: https://github.com/bibendi "Misha Merkushin"
169
182
  [@FX-HAO]: https://github.com/FX-HAO "Fuxin Hao"
data/Gemfile CHANGED
@@ -9,7 +9,7 @@ gemspec
9
9
 
10
10
  gem "graphql", ENV.fetch("GRAPHQL_RUBY_VERSION", "~> 1.12")
11
11
  gem "anycable", ENV.fetch("ANYCABLE_VERSION", "~> 1.0")
12
- gem "anycable-rails", ENV.fetch("ANYCABLE_RAILS_VERSION", "~> 1.2")
12
+ gem "anycable-rails", ENV.fetch("ANYCABLE_RAILS_VERSION", "~> 1.3")
13
13
 
14
14
  group :development, :test do
15
15
  gem "pry"
@@ -17,7 +17,4 @@ group :development, :test do
17
17
 
18
18
  gem "rubocop"
19
19
  gem "rubocop-rspec"
20
-
21
- # See https://github.com/guilleiguaran/fakeredis/pull/247
22
- gem "fakeredis", github: 'guilleiguaran/fakeredis'
23
20
  end
data/README.md CHANGED
@@ -209,6 +209,14 @@ As in AnyCable there is no place to store subscription data in-memory, it should
209
209
  => 52ee8d65-275e-4d22-94af-313129116388
210
210
  ```
211
211
 
212
+ ## Testing applications which use `graphql-anycable`
213
+
214
+ You can pass custom redis-server URL to AnyCable using ENV variable.
215
+
216
+ ```bash
217
+ REDIS_URL=redis://localhost:6379/5 bundle exec rspec
218
+ ```
219
+
212
220
  ## Development
213
221
 
214
222
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -33,7 +33,6 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_development_dependency "anycable-rails"
35
35
  spec.add_development_dependency "bundler", "~> 2.0"
36
- spec.add_development_dependency "fakeredis"
37
36
  spec.add_development_dependency "rack"
38
37
  spec.add_development_dependency "railties"
39
38
  spec.add_development_dependency "rake", ">= 12.3.3"
@@ -9,14 +9,6 @@ module GraphQL
9
9
  path = File.expand_path(__dir__)
10
10
  Dir.glob("#{path}/tasks/**/*.rake").each { |f| load f }
11
11
  end
12
-
13
- config.after_initialize do
14
- if GraphQL::AnyCable.config.use_client_provided_uniq_id?
15
- warn "[Deprecated] Using client provided channel uniq IDs could lead to unexpected behaviour, " \
16
- "please, set GraphQL::AnyCable.config.use_client_provided_uniq_id = false or GRAPHQL_ANYCABLE_USE_CLIENT_PROVIDED_UNIQ_ID=false, " \
17
- "and update the `#unsubscribed` callback code according to the latest docs."
18
- end
19
- end
20
12
  end
21
13
  end
22
14
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module GraphQL
4
4
  module AnyCable
5
- VERSION = "1.1.4"
5
+ VERSION = "1.1.6"
6
6
  end
7
7
  end
@@ -156,16 +156,16 @@ module GraphQL
156
156
  query_string: query.query_string,
157
157
  variables: query.provided_variables.to_json,
158
158
  context: @serializer.dump(context.to_h),
159
- operation_name: query.operation_name,
159
+ operation_name: query.operation_name.to_s,
160
160
  events: events.map { |e| [e.topic, e.fingerprint] }.to_h.to_json,
161
161
  }
162
162
 
163
163
  redis.multi do |pipeline|
164
- pipeline.sadd(CHANNEL_PREFIX + channel_uniq_id, subscription_id)
164
+ pipeline.sadd(CHANNEL_PREFIX + channel_uniq_id, [subscription_id])
165
165
  pipeline.mapped_hmset(SUBSCRIPTION_PREFIX + subscription_id, data)
166
166
  events.each do |event|
167
167
  pipeline.zincrby(FINGERPRINTS_PREFIX + event.topic, 1, event.fingerprint)
168
- pipeline.sadd(SUBSCRIPTIONS_PREFIX + event.fingerprint, subscription_id)
168
+ pipeline.sadd(SUBSCRIPTIONS_PREFIX + event.fingerprint, [subscription_id])
169
169
  end
170
170
  next unless config.subscription_expiration_seconds
171
171
  pipeline.expire(CHANNEL_PREFIX + channel_uniq_id, config.subscription_expiration_seconds)
@@ -11,6 +11,12 @@ require_relative "graphql/subscriptions/anycable_subscriptions"
11
11
  module GraphQL
12
12
  module AnyCable
13
13
  def self.use(schema, **options)
14
+ if config.use_client_provided_uniq_id?
15
+ warn "[Deprecated] Using client provided channel uniq IDs could lead to unexpected behaviour, " \
16
+ "please, set GraphQL::AnyCable.config.use_client_provided_uniq_id = false or GRAPHQL_ANYCABLE_USE_CLIENT_PROVIDED_UNIQ_ID=false, " \
17
+ "and update the `#unsubscribed` callback code according to the latest docs."
18
+ end
19
+
14
20
  schema.use GraphQL::Subscriptions::AnyCableSubscriptions, **options
15
21
  end
16
22
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-anycable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Novikov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-28 00:00:00.000000000 Z
11
+ date: 2023-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: anycable
@@ -106,20 +106,6 @@ dependencies:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
108
  version: '2.0'
109
- - !ruby/object:Gem::Dependency
110
- name: fakeredis
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- version: '0'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: '0'
123
109
  - !ruby/object:Gem::Dependency
124
110
  name: rack
125
111
  requirement: !ruby/object:Gem::Requirement