graphql 1.7.6 → 1.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/graphql/function_generator.rb +1 -1
  3. data/lib/generators/graphql/loader_generator.rb +1 -1
  4. data/lib/generators/graphql/mutation_generator.rb +6 -1
  5. data/lib/generators/graphql/templates/function.erb +2 -2
  6. data/lib/generators/graphql/templates/loader.erb +2 -2
  7. data/lib/graphql/execution.rb +1 -0
  8. data/lib/graphql/execution/instrumentation.rb +82 -0
  9. data/lib/graphql/execution/multiplex.rb +11 -28
  10. data/lib/graphql/field.rb +5 -0
  11. data/lib/graphql/internal_representation/node.rb +1 -1
  12. data/lib/graphql/language.rb +1 -0
  13. data/lib/graphql/language/document_from_schema_definition.rb +185 -0
  14. data/lib/graphql/language/lexer.rb +3 -3
  15. data/lib/graphql/language/lexer.rl +2 -2
  16. data/lib/graphql/language/token.rb +9 -2
  17. data/lib/graphql/query.rb +4 -0
  18. data/lib/graphql/relay/relation_connection.rb +13 -18
  19. data/lib/graphql/schema.rb +6 -0
  20. data/lib/graphql/schema/build_from_definition.rb +2 -0
  21. data/lib/graphql/subscriptions/action_cable_subscriptions.rb +6 -4
  22. data/lib/graphql/tracing.rb +1 -0
  23. data/lib/graphql/tracing/data_dog_tracing.rb +45 -0
  24. data/lib/graphql/tracing/platform_tracing.rb +20 -7
  25. data/lib/graphql/version.rb +1 -1
  26. data/readme.md +1 -1
  27. data/spec/dummy/app/channels/graphql_channel.rb +22 -1
  28. data/spec/dummy/log/development.log +239 -0
  29. data/spec/dummy/log/test.log +204 -0
  30. data/spec/dummy/test/system/action_cable_subscription_test.rb +4 -0
  31. data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
  32. data/spec/generators/graphql/function_generator_spec.rb +26 -0
  33. data/spec/generators/graphql/loader_generator_spec.rb +24 -0
  34. data/spec/graphql/analysis/max_query_complexity_spec.rb +3 -3
  35. data/spec/graphql/analysis/max_query_depth_spec.rb +3 -3
  36. data/spec/graphql/boolean_type_spec.rb +3 -3
  37. data/spec/graphql/execution/execute_spec.rb +1 -1
  38. data/spec/graphql/execution/instrumentation_spec.rb +165 -0
  39. data/spec/graphql/execution/multiplex_spec.rb +1 -1
  40. data/spec/graphql/float_type_spec.rb +2 -2
  41. data/spec/graphql/id_type_spec.rb +1 -1
  42. data/spec/graphql/input_object_type_spec.rb +2 -2
  43. data/spec/graphql/int_type_spec.rb +2 -2
  44. data/spec/graphql/internal_representation/rewrite_spec.rb +2 -2
  45. data/spec/graphql/introspection/schema_type_spec.rb +1 -0
  46. data/spec/graphql/language/document_from_schema_definition_spec.rb +337 -0
  47. data/spec/graphql/language/lexer_spec.rb +12 -1
  48. data/spec/graphql/language/parser_spec.rb +1 -1
  49. data/spec/graphql/query/arguments_spec.rb +3 -3
  50. data/spec/graphql/query/variables_spec.rb +1 -1
  51. data/spec/graphql/query_spec.rb +4 -4
  52. data/spec/graphql/relay/base_connection_spec.rb +1 -1
  53. data/spec/graphql/relay/connection_resolve_spec.rb +1 -1
  54. data/spec/graphql/relay/connection_type_spec.rb +1 -1
  55. data/spec/graphql/relay/mutation_spec.rb +3 -3
  56. data/spec/graphql/relay/relation_connection_spec.rb +58 -0
  57. data/spec/graphql/schema/build_from_definition_spec.rb +14 -0
  58. data/spec/graphql/schema/validation_spec.rb +1 -1
  59. data/spec/graphql/schema/warden_spec.rb +11 -11
  60. data/spec/graphql/schema_spec.rb +8 -1
  61. data/spec/graphql/string_type_spec.rb +3 -3
  62. data/spec/graphql/subscriptions_spec.rb +1 -1
  63. data/spec/graphql/tracing/platform_tracing_spec.rb +59 -0
  64. data/spec/support/dummy/schema.rb +19 -0
  65. data/spec/support/star_wars/data.rb +1 -2
  66. metadata +9 -2
@@ -387,7 +387,7 @@ def self.run_lexer(query_string)
387
387
  begin
388
388
  te = p+1;
389
389
  begin
390
- emit_string(ts + 1, te - 1, meta)
390
+ emit_string(ts + 1, te, meta)
391
391
  end
392
392
 
393
393
  end
@@ -791,7 +791,7 @@ def self.run_lexer(query_string)
791
791
  begin
792
792
  p = ((te))-1;
793
793
  begin
794
- emit_string(ts + 1, te - 1, meta)
794
+ emit_string(ts + 1, te, meta)
795
795
  end
796
796
 
797
797
  end
@@ -1304,7 +1304,7 @@ PACK_DIRECTIVE = "c*"
1304
1304
  UTF_8_ENCODING = "UTF-8"
1305
1305
 
1306
1306
  def self.emit_string(ts, te, meta)
1307
- value = meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
1307
+ value = meta[:data][ts...te - 1].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
1308
1308
  if value !~ VALID_STRING
1309
1309
  meta[:tokens] << token = GraphQL::Language::Token.new(
1310
1310
  name: :BAD_UNICODE_ESCAPE,
@@ -75,7 +75,7 @@
75
75
  RBRACKET => { emit(:RBRACKET, ts, te, meta) };
76
76
  LBRACKET => { emit(:LBRACKET, ts, te, meta) };
77
77
  COLON => { emit(:COLON, ts, te, meta) };
78
- QUOTED_STRING => { emit_string(ts + 1, te - 1, meta) };
78
+ QUOTED_STRING => { emit_string(ts + 1, te, meta) };
79
79
  VAR_SIGN => { emit(:VAR_SIGN, ts, te, meta) };
80
80
  DIR_SIGN => { emit(:DIR_SIGN, ts, te, meta) };
81
81
  ELLIPSIS => { emit(:ELLIPSIS, ts, te, meta) };
@@ -189,7 +189,7 @@ module GraphQL
189
189
  UTF_8_ENCODING = "UTF-8"
190
190
 
191
191
  def self.emit_string(ts, te, meta)
192
- value = meta[:data][ts...te].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
192
+ value = meta[:data][ts...te - 1].pack(PACK_DIRECTIVE).force_encoding(UTF_8_ENCODING)
193
193
  if value !~ VALID_STRING
194
194
  meta[:tokens] << token = GraphQL::Language::Token.new(
195
195
  name: :BAD_UNICODE_ESCAPE,
@@ -5,7 +5,10 @@ module GraphQL
5
5
  # Contains type, value and position data.
6
6
  class Token
7
7
  # @return [Symbol] The kind of token this is
8
- attr_reader :name, :prev_token, :line
8
+ attr_reader :name
9
+ # @return [String] The text of this token
10
+ attr_reader :value
11
+ attr_reader :prev_token, :line, :col
9
12
 
10
13
  def initialize(value:, name:, line:, col:, prev_token:)
11
14
  @name = name
@@ -15,13 +18,17 @@ module GraphQL
15
18
  @prev_token = prev_token
16
19
  end
17
20
 
18
- def to_s; @value; end
21
+ alias to_s value
19
22
  def to_i; @value.to_i; end
20
23
  def to_f; @value.to_f; end
21
24
 
22
25
  def line_and_column
23
26
  [@line, @col]
24
27
  end
28
+
29
+ def inspect
30
+ "(#{@name} #{@value.inspect} [#{@line}:#{@col}])"
31
+ end
25
32
  end
26
33
  end
27
34
  end
data/lib/graphql/query.rb CHANGED
@@ -44,6 +44,10 @@ module GraphQL
44
44
  with_prepared_ast { @document }
45
45
  end
46
46
 
47
+ def inspect
48
+ "query ..."
49
+ end
50
+
47
51
  # @return [String, nil] The name of the operation to run (may be inferred)
48
52
  def selected_operation_name
49
53
  return nil unless selected_operation
@@ -7,11 +7,11 @@ module GraphQL
7
7
  # - `Sequel::Dataset`
8
8
  class RelationConnection < BaseConnection
9
9
  def cursor_from_node(item)
10
- item_index = paged_nodes_array.index(item)
10
+ item_index = paged_nodes.index(item)
11
11
  if item_index.nil?
12
12
  raise("Can't generate cursor, item not found in connection: #{item}")
13
13
  else
14
- offset = item_index + 1 + ((relation_offset(paged_nodes) || 0) - (relation_offset(sliced_nodes) || 0))
14
+ offset = item_index + 1 + ((paged_nodes_offset || 0) - (relation_offset(sliced_nodes) || 0))
15
15
 
16
16
  if after
17
17
  offset += offset_from_cursor(after)
@@ -25,7 +25,7 @@ module GraphQL
25
25
 
26
26
  def has_next_page
27
27
  if first
28
- paged_nodes_length >= first && sliced_nodes_count > first
28
+ paged_nodes.length >= first && sliced_nodes_count > first
29
29
  elsif GraphQL::Relay::ConnectionType.bidirectional_pagination && last
30
30
  sliced_nodes_count > last
31
31
  else
@@ -35,7 +35,7 @@ module GraphQL
35
35
 
36
36
  def has_previous_page
37
37
  if last
38
- paged_nodes_length >= last && sliced_nodes_count > last
38
+ paged_nodes.length >= last && sliced_nodes_count > last
39
39
  elsif GraphQL::Relay::ConnectionType.bidirectional_pagination && after
40
40
  # We've already paginated through the collection a bit,
41
41
  # there are nodes behind us
@@ -64,6 +64,7 @@ module GraphQL
64
64
  private
65
65
 
66
66
  # apply first / last limit results
67
+ # @return [Array]
67
68
  def paged_nodes
68
69
  return @paged_nodes if defined? @paged_nodes
69
70
 
@@ -94,7 +95,14 @@ module GraphQL
94
95
  end
95
96
  end
96
97
 
97
- @paged_nodes = items
98
+ # Store this here so we can convert the relation to an Array
99
+ # (this avoids an extra DB call on Sequel)
100
+ @paged_nodes_offset = relation_offset(items)
101
+ @paged_nodes = items.to_a
102
+ end
103
+
104
+ def paged_nodes_offset
105
+ paged_nodes && @paged_nodes_offset
98
106
  end
99
107
 
100
108
  def relation_offset(relation)
@@ -166,19 +174,6 @@ module GraphQL
166
174
  def offset_from_cursor(cursor)
167
175
  decode(cursor).to_i
168
176
  end
169
-
170
- def paged_nodes_array
171
- return @paged_nodes_array if defined?(@paged_nodes_array)
172
- @paged_nodes_array = paged_nodes.to_a
173
- end
174
-
175
- def paged_nodes_length
176
- if paged_nodes.respond_to?(:length)
177
- paged_nodes.length
178
- else
179
- paged_nodes_array.length
180
- end
181
- end
182
177
  end
183
178
 
184
179
  if defined?(ActiveRecord::Relation)
@@ -542,6 +542,12 @@ module GraphQL
542
542
  GraphQL::Schema::Printer.print_schema(self, only: only, except: except, context: context)
543
543
  end
544
544
 
545
+ # Return the GraphQL::Language::Document IDL AST for the schema
546
+ # @return [GraphQL::Language::Document]
547
+ def to_document
548
+ GraphQL::Language::DocumentFromSchemaDefinition.new(self).document
549
+ end
550
+
545
551
  # Return the Hash response of {Introspection::INTROSPECTION_QUERY}.
546
552
  # @param context [Hash]
547
553
  # @param only [<#call(member, ctx)>]
@@ -191,6 +191,8 @@ module GraphQL
191
191
  default_value.name
192
192
  when GraphQL::Language::Nodes::NullValue
193
193
  nil
194
+ when GraphQL::Language::Nodes::InputObject
195
+ default_value.to_h
194
196
  else
195
197
  default_value
196
198
  end
@@ -62,19 +62,21 @@ module GraphQL
62
62
  class ActionCableSubscriptions < GraphQL::Subscriptions
63
63
  SUBSCRIPTION_PREFIX = "graphql-subscription:"
64
64
  EVENT_PREFIX = "graphql-event:"
65
- def initialize(**rest)
65
+
66
+ # @param serializer [<#dump(obj), #load(string)] Used for serializing messages before handing them to `.broadcast(msg)`
67
+ def initialize(serializer: Serialize, **rest)
66
68
  # A per-process map of subscriptions to deliver.
67
69
  # This is provided by Rails, so let's use it
68
70
  @subscriptions = Concurrent::Map.new
71
+ @serializer = serializer
69
72
  super
70
73
  end
71
74
 
72
75
  # An event was triggered; Push the data over ActionCable.
73
76
  # Subscribers will re-evaluate locally.
74
- # TODO: this method name is a smell
75
77
  def execute_all(event, object)
76
78
  stream = EVENT_PREFIX + event.topic
77
- message = Serialize.dump(object)
79
+ message = @serializer.dump(object)
78
80
  ActionCable.server.broadcast(stream, message)
79
81
  end
80
82
 
@@ -97,7 +99,7 @@ module GraphQL
97
99
  @subscriptions[subscription_id] = query
98
100
  events.each do |event|
99
101
  channel.stream_from(EVENT_PREFIX + event.topic, coder: ActiveSupport::JSON) do |message|
100
- execute(subscription_id, event, Serialize.load(message))
102
+ execute(subscription_id, event, @serializer.load(message))
101
103
  nil
102
104
  end
103
105
  end
@@ -2,6 +2,7 @@
2
2
  require "graphql/tracing/active_support_notifications_tracing"
3
3
  require "graphql/tracing/platform_tracing"
4
4
  require "graphql/tracing/appsignal_tracing"
5
+ require "graphql/tracing/data_dog_tracing"
5
6
  require "graphql/tracing/new_relic_tracing"
6
7
  require "graphql/tracing/scout_tracing"
7
8
  require "graphql/tracing/skylight_tracing"
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GraphQL
4
+ module Tracing
5
+ class DataDogTracing < PlatformTracing
6
+ self.platform_keys = {
7
+ 'lex' => 'lex.graphql',
8
+ 'parse' => 'parse.graphql',
9
+ 'validate' => 'validate.graphql',
10
+ 'analyze_query' => 'analyze.graphql',
11
+ 'analyze_multiplex' => 'analyze.graphql',
12
+ 'execute_multiplex' => 'execute.graphql',
13
+ 'execute_query' => 'execute.graphql',
14
+ 'execute_query_lazy' => 'execute.graphql',
15
+ }
16
+
17
+ def platform_trace(platform_key, key, data)
18
+ service = options.fetch(:service, 'ruby-graphql')
19
+
20
+ pin = Datadog::Pin.get_from(self)
21
+ unless pin
22
+ pin = Datadog::Pin.new(service)
23
+ pin.onto(self)
24
+ end
25
+
26
+ pin.tracer.trace(platform_key, service: pin.service) do |span|
27
+ if key == 'execute_multiplex'
28
+ span.resource = data[:multiplex].queries.map(&:selected_operation_name).join(', ')
29
+ end
30
+
31
+ if key == 'execute_query'
32
+ span.set_tag(:selected_operation_name, data[:query].selected_operation_name)
33
+ span.set_tag(:selected_operation_type, data[:query].selected_operation.operation_type)
34
+ span.set_tag(:query_string, data[:query].query_string)
35
+ end
36
+ yield
37
+ end
38
+ end
39
+
40
+ def platform_field_key(type, field)
41
+ "#{type.name}.#{field.name}"
42
+ end
43
+ end
44
+ end
45
+ end
@@ -12,8 +12,10 @@ module GraphQL
12
12
  attr_accessor :platform_keys
13
13
  end
14
14
 
15
- def initialize
15
+ def initialize(options = {})
16
+ @options = options
16
17
  @platform_keys = self.class.platform_keys
18
+ @trace_scalars = options.fetch(:trace_scalars, false)
17
19
  end
18
20
 
19
21
  def trace(key, data)
@@ -41,19 +43,30 @@ module GraphQL
41
43
  return_type = field.type.unwrap
42
44
  case return_type
43
45
  when GraphQL::ScalarType, GraphQL::EnumType
44
- field
46
+ if field.trace || (field.trace.nil? && @trace_scalars)
47
+ trace_field(type, field)
48
+ else
49
+ field
50
+ end
45
51
  else
46
- new_f = field.redefine
47
- new_f.metadata[:platform_key] = platform_field_key(type, field)
48
- new_f
52
+ trace_field(type, field)
49
53
  end
50
54
  end
51
55
 
52
- def self.use(schema_defn)
53
- tracer = self.new
56
+ def trace_field(type, field)
57
+ new_f = field.redefine
58
+ new_f.metadata[:platform_key] = platform_field_key(type, field)
59
+ new_f
60
+ end
61
+
62
+ def self.use(schema_defn, options = {})
63
+ tracer = self.new(options)
54
64
  schema_defn.instrument(:field, tracer)
55
65
  schema_defn.tracer(tracer)
56
66
  end
67
+
68
+ private
69
+ attr_reader :options
57
70
  end
58
71
  end
59
72
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "1.7.6"
3
+ VERSION = "1.7.7"
4
4
  end
data/readme.md CHANGED
@@ -9,7 +9,7 @@
9
9
  A Ruby implementation of [GraphQL](http://graphql.org/).
10
10
 
11
11
  - [Website](https://rmosolgo.github.io/graphql-ruby)
12
- - [API Documentation](http://www.rubydoc.info/github/rmosolgo/graphql-ruby)
12
+ - [API Documentation](http://www.rubydoc.info/gems/graphql)
13
13
  - [Newsletter](https://tinyletter.com/graphql-ruby)
14
14
 
15
15
  ## Installation
@@ -17,10 +17,31 @@ class GraphqlChannel < ActionCable::Channel::Base
17
17
  field :value, types.Int
18
18
  end
19
19
 
20
+ # Wacky behavior around the number 4
21
+ # so we can confirm it's used by the UI
22
+ module CustomSerializer
23
+ def self.load(value)
24
+ if value == "4x"
25
+ ExamplePayload.new(400)
26
+ else
27
+ GraphQL::Subscriptions::Serialize.load(value)
28
+ end
29
+ end
30
+
31
+ def self.dump(obj)
32
+ if obj.is_a?(ExamplePayload) && obj.value == 4
33
+ "4x"
34
+ else
35
+ GraphQL::Subscriptions::Serialize.dump(obj)
36
+ end
37
+ end
38
+ end
39
+
20
40
  GraphQLSchema = GraphQL::Schema.define do
21
41
  query(QueryType)
22
42
  subscription(SubscriptionType)
23
- use GraphQL::Subscriptions::ActionCableSubscriptions
43
+ use GraphQL::Subscriptions::ActionCableSubscriptions,
44
+ serializer: CustomSerializer
24
45
  end
25
46
 
26
47
  def subscribed
@@ -358,3 +358,242 @@ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>5})
358
358
  [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
359
359
  [ActionCable] Broadcasting to graphql-subscription:c2334c1a-d146-4b1c-90d9-9cb1c7b4046d: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
360
360
  GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:c2334c1a-d146-4b1c-90d9-9cb1c7b4046d)
361
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:27:24 -0500
362
+ Processing by PagesController#show as HTML
363
+ Rendering pages/show.html within layouts/application
364
+ Rendered pages/show.html within layouts/application (0.8ms)
365
+ Completed 200 OK in 173ms (Views: 171.5ms)
366
+
367
+
368
+ Started GET "/assets/application-aca150c4b2db51d5326af18134f6281fbce7e823a372b0337cca65ff41b4a7ea.js" for 127.0.0.1 at 2017-11-16 21:27:24 -0500
369
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:27:24 -0500
370
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:27:24 -0500
371
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
372
+ GraphqlChannel is transmitting the subscription confirmation
373
+ GraphqlChannel is transmitting the subscription confirmation
374
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
375
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
376
+ GraphqlChannel is streaming from graphql-subscription:34ad7c3f-9311-4982-b873-312032bbcd76
377
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
378
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
379
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
380
+ GraphqlChannel is streaming from graphql-subscription:73055d69-7575-4caa-88b7-74e1a1070c0d
381
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
382
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
383
+ Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"15fc7cd712b\"}", "data"=>"{\"id\":\"updates-1\",\"value\":1,\"action\":\"make_trigger\"}"}) [NoMethodError - undefined method `dump_value' for GraphqlChannel::CustomSerializer:Module]: /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions/serialize.rb:21:in `dump' | /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:36:in `dump' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions/action_cable_subscriptions.rb:78:in `execute_all' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions.rb:52:in `trigger' | /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:83:in `make_trigger'
384
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:28:22 -0500
385
+ Processing by PagesController#show as HTML
386
+ Rendering pages/show.html within layouts/application
387
+ Rendered pages/show.html within layouts/application (0.6ms)
388
+ Completed 200 OK in 166ms (Views: 164.8ms)
389
+
390
+
391
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:28:23 -0500
392
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:28:23 -0500
393
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
394
+ GraphqlChannel is transmitting the subscription confirmation
395
+ GraphqlChannel is transmitting the subscription confirmation
396
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
397
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
398
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
399
+ GraphqlChannel is streaming from graphql-subscription:dee02509-90a6-4ac1-8c1d-c765cb445ddd
400
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
401
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
402
+ GraphqlChannel is streaming from graphql-subscription:0f50c340-d3cd-4ab7-8e6a-055d23083185
403
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
404
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
405
+ Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"15fc7cf7d8b\"}", "data"=>"{\"id\":\"updates-1\",\"value\":1,\"action\":\"make_trigger\"}"}) [NameError - undefined local variable or method `value' for GraphqlChannel::CustomSerializer:Module]: /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:35:in `dump' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions/action_cable_subscriptions.rb:78:in `execute_all' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/subscriptions.rb:52:in `trigger' | /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:82:in `make_trigger' | /Users/rmosolgo/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/actioncable-5.1.4/lib/action_cable/channel/base.rb:262:in `public_send'
406
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:28:40 -0500
407
+ Processing by PagesController#show as HTML
408
+ Rendering pages/show.html within layouts/application
409
+ Rendered pages/show.html within layouts/application (0.6ms)
410
+ Completed 200 OK in 11ms (Views: 8.8ms)
411
+
412
+
413
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:28:40 -0500
414
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:28:40 -0500
415
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
416
+ GraphqlChannel is transmitting the subscription confirmation
417
+ GraphqlChannel is transmitting the subscription confirmation
418
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
419
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
420
+ GraphqlChannel is streaming from graphql-subscription:528198ff-21c1-4051-a319-1feb9060f335
421
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
422
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
423
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
424
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
425
+ GraphqlChannel is streaming from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50
426
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
427
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
428
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
429
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
430
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
431
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
432
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
433
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
434
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
435
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
436
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
437
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
438
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
439
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
440
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
441
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
442
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>5})
443
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
444
+ [ActionCable] Broadcasting to graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
445
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:dba8445d-3284-4734-90f6-fdf8f0707a50)
446
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:29:15 -0500
447
+ Processing by PagesController#show as HTML
448
+ Rendering pages/show.html within layouts/application
449
+ Rendered pages/show.html within layouts/application (0.8ms)
450
+ Completed 200 OK in 178ms (Views: 176.8ms)
451
+
452
+
453
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:29:15 -0500
454
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:29:15 -0500
455
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
456
+ GraphqlChannel is transmitting the subscription confirmation
457
+ GraphqlChannel is transmitting the subscription confirmation
458
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
459
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
460
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
461
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
462
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
463
+ GraphqlChannel is streaming from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847
464
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
465
+ GraphqlChannel is streaming from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee
466
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
467
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
468
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
469
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
470
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
471
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
472
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
473
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
474
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
475
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
476
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
477
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
478
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
479
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
480
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
481
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
482
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>5})
483
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
484
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
485
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
486
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>6})
487
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzY\"}"
488
+ [ActionCable] Broadcasting to graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847: {:result=>{"data"=>{"payload"=>{"value"=>6}}}, :more=>true}
489
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>6}}}, "more"=>true} (via streamed from graphql-subscription:ac17fc47-fdf3-4951-813b-f4d04fdc7847)
490
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
491
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
492
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
493
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
494
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
495
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
496
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
497
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
498
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
499
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
500
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
501
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
502
+ GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
503
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
504
+ [ActionCable] Broadcasting to graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
505
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:8642d019-1a8c-4eb9-ada2-7a5b1ccffeee)
506
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:30:10 -0500
507
+ Processing by PagesController#show as HTML
508
+ Rendering pages/show.html within layouts/application
509
+ Rendered pages/show.html within layouts/application (0.7ms)
510
+ Completed 200 OK in 12ms (Views: 10.1ms)
511
+
512
+
513
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:30:10 -0500
514
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:30:10 -0500
515
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
516
+ GraphqlChannel is transmitting the subscription confirmation
517
+ GraphqlChannel is transmitting the subscription confirmation
518
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
519
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
520
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
521
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
522
+ GraphqlChannel is streaming from graphql-subscription:e33017bd-68e0-4443-81b9-cb2b750d345e
523
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
524
+ GraphqlChannel is streaming from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584
525
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
526
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
527
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09dee35f8>
528
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
529
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
530
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
531
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
532
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
533
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09deb3330>
534
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
535
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
536
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
537
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
538
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
539
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09de7b020>
540
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
541
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
542
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
543
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
544
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
545
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09de41f78>
546
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
547
+ Loading: "4x"
548
+ [ActionCable] Broadcasting to graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584: {:result=>{"data"=>{"payload"=>{"value"=>4}}}, :more=>true}
549
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>4}}}, "more"=>true} (via streamed from graphql-subscription:ff9f5a68-c71c-4b5c-8135-cb902840a584)
550
+ Started GET "/" for 127.0.0.1 at 2017-11-16 21:30:26 -0500
551
+ Processing by PagesController#show as HTML
552
+ Rendering pages/show.html within layouts/application
553
+ Rendered pages/show.html within layouts/application (0.3ms)
554
+ Completed 200 OK in 7ms (Views: 5.4ms)
555
+
556
+
557
+ Started GET "/cable" for 127.0.0.1 at 2017-11-16 21:30:27 -0500
558
+ Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2017-11-16 21:30:27 -0500
559
+ Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
560
+ GraphqlChannel is transmitting the subscription confirmation
561
+ GraphqlChannel is transmitting the subscription confirmation
562
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
563
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
564
+ GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
565
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-2
566
+ GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
567
+ GraphqlChannel is streaming from graphql-subscription:ba2e384c-cbcf-4f9f-aa5e-8f666effd2a8
568
+ GraphqlChannel is streaming from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9
569
+ GraphqlChannel is streaming from graphql-event::payload:id:updates-1
570
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
571
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09e9fc660>
572
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
573
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
574
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
575
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
576
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
577
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09dced938>
578
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
579
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
580
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
581
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
582
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
583
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09e8c41d0>
584
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
585
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
586
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
587
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
588
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>4})
589
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09d407ad0>
590
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "4x"
591
+ Loading: "4x"
592
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
593
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)
594
+ GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>5})
595
+ dumping: #<GraphqlChannel::ExamplePayload:0x007fc09dbbf250>
596
+ [ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
597
+ Loading: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzU\"}"
598
+ [ActionCable] Broadcasting to graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9: {:result=>{"data"=>{"payload"=>{"value"=>5}}}, :more=>true}
599
+ GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>5}}}, "more"=>true} (via streamed from graphql-subscription:18c8f852-04c7-4bb8-b6f7-ecc64a2a8ac9)