apollo-federation 1.1.3 → 2.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: 8eef314d1457da9e7bd70ac5fe92c3d1168dfe340a3ba43a9d0e96475e44f027
4
- data.tar.gz: 675b88c92096f8d73e240b8c8ab8dc2a5429b0c5d3249c50c74f98f50839a9bf
3
+ metadata.gz: 9ec8b363ade4047069cbbf7774e3fc88b93c4e9b61ae8ca0e5baf60e6ca0f488
4
+ data.tar.gz: 73866b38229feea6644ed23ce2ac9adad4cf9c2fb760f4426e519ec317afc256
5
5
  SHA512:
6
- metadata.gz: a5fb6b967baeeb09c89f60d52e7d25bff87966c20abb6f2577487316b3edd96afae6d400de968ecb92a3fd97ae0f06c057c1985e9f8d9a83fadc99392a0c8cc4
7
- data.tar.gz: 6b4574b0c718229d0b7ae717bddffdc1347d1d678e63ac3afdae54f58c1d4d5973ac76641c22129cb2ec5d661ce902f56bc43f06baf433739ac364303c816876
6
+ metadata.gz: 03d6d4e2dcc6243ca7e05c40225b0b3c8516d777ef2c9ba37516ab0fde3dd8a0c61e7872526be323a47e7c1ce908fe490547bb66ad300985e04dbd047879fa5e
7
+ data.tar.gz: 924c9aae3668493d09559173a7d073aaf751fffad84df0958a6de9e4e4bfcebd984e4ba77cb5e06d8a1add6760271c075574f46c91e5f7c38f68bdb274f4e1be
data/CHANGELOG.md CHANGED
@@ -1,3 +1,34 @@
1
+ # [2.0.0](https://github.com/Gusto/apollo-federation-ruby/compare/v1.1.5...v2.0.0) (2022-01-27)
2
+
3
+
4
+ * Remove beta disclaimer (#165) ([29da3de](https://github.com/Gusto/apollo-federation-ruby/commit/29da3deb0163c38d5d08f084e5e8dc67d8454358)), closes [#165](https://github.com/Gusto/apollo-federation-ruby/issues/165)
5
+
6
+
7
+ ### BREAKING CHANGES
8
+
9
+ * GraphQL 1.9.x support removed
10
+
11
+ ## [1.1.5](https://github.com/Gusto/apollo-federation-ruby/compare/v1.1.4...v1.1.5) (2020-10-29)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * pass context as a Hash to GraphQL::Schema.federation_sdl ([c13a94e](https://github.com/Gusto/apollo-federation-ruby/commit/c13a94e6487471b47f05907bd4f83c03fa7e6af7))
17
+
18
+ ## [1.1.4](https://github.com/Gusto/apollo-federation-ruby/compare/v1.1.3...v1.1.4) (2020-09-25)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **tracing:** properly handle parsing and validation errors ([#102](https://github.com/Gusto/apollo-federation-ruby/issues/102)) ([a1c2a41](https://github.com/Gusto/apollo-federation-ruby/commit/a1c2a41d3d01f06364d439cdcc273f4678fed7bd)), closes [#101](https://github.com/Gusto/apollo-federation-ruby/issues/101) [#101](https://github.com/Gusto/apollo-federation-ruby/issues/101)
24
+
25
+ ## [1.1.4-beta.1](https://github.com/Gusto/apollo-federation-ruby/compare/v1.1.3...v1.1.4-beta.1) (2020-09-21)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * **tracing:** properly handle parsing and validation errors ([#101](https://github.com/Gusto/apollo-federation-ruby/issues/101)) ([6cf8202](https://github.com/Gusto/apollo-federation-ruby/commit/6cf820281dd85bd358c6bf4c176b9a73a9280d54))
31
+
1
32
  ## [1.1.3](https://github.com/Gusto/apollo-federation-ruby/compare/v1.1.2...v1.1.3) (2020-07-16)
2
33
 
3
34
 
data/README.md CHANGED
@@ -1,13 +1,9 @@
1
1
  # apollo-federation
2
2
 
3
- [![CircleCI](https://circleci.com/gh/Gusto/apollo-federation-ruby/tree/master.svg?style=svg)](https://circleci.com/gh/Gusto/apollo-federation-ruby/tree/master)
3
+ [![CircleCI](https://circleci.com/gh/Gusto/apollo-federation-ruby/tree/main.svg?style=svg)](https://circleci.com/gh/Gusto/apollo-federation-ruby/tree/main)
4
4
 
5
5
  This gem extends the [GraphQL Ruby](http://graphql-ruby.org/) gem to add support for creating an [Apollo Federation](https://www.apollographql.com/docs/apollo-server/federation/introduction/) schema.
6
6
 
7
- ## DISCLAIMER
8
-
9
- This gem is still in a beta stage and may have some bugs or incompatibilities. See the [Known Issues and Limitations](#known-issues-and-limitations) below. If you run into any problems, please [file an issue](https://github.com/Gusto/apollo-federation-ruby/issues).
10
-
11
7
  ## Installation
12
8
 
13
9
  Add this line to your application's Gemfile:
@@ -85,12 +81,12 @@ Start the gateway:
85
81
 
86
82
  This will start up the gateway and serve it at http://localhost:5000.
87
83
 
88
-
89
84
  ## Usage
90
85
 
91
86
  The API is designed to mimic the API of [Apollo's federation library](https://www.apollographql.com/docs/apollo-server/federation/introduction/). It's best to read and understand the way federation works, in general, before attempting to use this library.
92
87
 
93
88
  ### Extending a type
89
+
94
90
  [Apollo documentation](https://www.apollographql.com/docs/apollo-server/federation/core-concepts/#extending-external-types)
95
91
 
96
92
  Call `extend_type` within your class definition:
@@ -102,6 +98,7 @@ end
102
98
  ```
103
99
 
104
100
  ### The `@key` directive
101
+
105
102
  [Apollo documentation](https://www.apollographql.com/docs/apollo-server/federation/core-concepts/#entities-and-keys)
106
103
 
107
104
  Call `key` within your class definition:
@@ -113,6 +110,7 @@ end
113
110
  ```
114
111
 
115
112
  ### The `@external` directive
113
+
116
114
  [Apollo documentation](https://www.apollographql.com/docs/apollo-server/federation/core-concepts/#referencing-external-types)
117
115
 
118
116
  Pass the `external: true` option to your field definition:
@@ -124,6 +122,7 @@ end
124
122
  ```
125
123
 
126
124
  ### The `@requires` directive
125
+
127
126
  [Apollo documentation](https://www.apollographql.com/docs/apollo-server/federation/advanced-features/#computed-fields)
128
127
 
129
128
  Pass the `requires:` option to your field definition:
@@ -137,6 +136,7 @@ end
137
136
  ```
138
137
 
139
138
  ### The `@provides` directive
139
+
140
140
  [Apollo documentation](https://www.apollographql.com/docs/apollo-server/federation/advanced-features/#using-denormalized-data)
141
141
 
142
142
  Pass the `provides:` option to your field definition:
@@ -148,6 +148,7 @@ end
148
148
  ```
149
149
 
150
150
  ### Reference resolvers
151
+
151
152
  [Apollo documentation](https://www.apollographql.com/docs/apollo-server/api/apollo-federation/#__resolvereference)
152
153
 
153
154
  Define a `resolve_reference` class method on your object. The method will be passed the reference from another service and the context for the query.
@@ -166,28 +167,108 @@ To support [federated tracing](https://www.apollographql.com/docs/apollo-server/
166
167
 
167
168
  1. Add `use ApolloFederation::Tracing` to your schema class.
168
169
  2. Change your controller to add `tracing_enabled: true` to the execution context based on the presence of the "include trace" header:
169
- ```ruby
170
- def execute
171
- # ...
172
- context = {
173
- tracing_enabled: ApolloFederation::Tracing.should_add_traces(headers)
174
- }
175
- # ...
170
+ ```ruby
171
+ def execute
172
+ # ...
173
+ context = {
174
+ tracing_enabled: ApolloFederation::Tracing.should_add_traces(headers)
175
+ }
176
+ # ...
177
+ end
178
+ ```
179
+
180
+ ## Exporting the Federated SDL
181
+
182
+ When using tools like [rover](https://www.apollographql.com/docs/rover/) for schema validation, etc., add a Rake task that prints the Federated SDL to a file:
183
+
184
+ ```rb
185
+ namespace :graphql do
186
+ namespace :federation do
187
+ task :dump do
188
+ File.write("schema.graphql", MySchema.federation_sdl)
176
189
  end
177
- ```
178
- 3. Change your controller to attach the traces to the response:
179
- ```ruby
180
- def execute
181
- # ...
182
- result = YourSchema.execute(query, ...)
183
- render json: ApolloFederation::Tracing.attach_trace_to_result(result)
184
- end
185
- ```
190
+ end
191
+ end
192
+ ```
193
+
194
+ Example validation check with Rover and Apollo Studio:
195
+
196
+ ```sh
197
+ bin/rake graphql:federation:dump
198
+ rover subgraph check mygraph@current --name mysubgraph --schema schema.graphql
199
+ ```
200
+
201
+ ## Testing the federated schema
202
+
203
+ This library does not include any testing helpers currently. A federated service receives subgraph queries from the Apollo Gateway via the `_entities` field and that can be tested in a request spec.
204
+
205
+ With Apollo Gateway setup to hit your service locally or by using existing query logs, you can retrieve the generated `_entities` queries.
206
+
207
+ For example, if you have a blog service that exposes posts by a given author, the query received by the service might look like this.
208
+
209
+ ```graphql
210
+ query($representations: [_Any!]!) {
211
+ _entities(representations: $representations) {
212
+ ... on BlogPost {
213
+ id
214
+ title
215
+ body
216
+ }
217
+ }
218
+ }
219
+ ```
220
+
221
+ Where `$representations` is an array of entity references from the gateway.
222
+
223
+ ```JSON
224
+ {
225
+ "representations": [
226
+ {
227
+ "__typename": "BlogPost",
228
+ "id": 1
229
+ },
230
+ {
231
+ "__typename": "BlogPost",
232
+ "id": 2
233
+ }
234
+ ]
235
+ }
236
+ ```
237
+
238
+ Using RSpec as an example, a request spec for this query.
239
+
240
+ ```ruby
241
+ it "resolves the blog post entities" do
242
+ blog_post = BlogPost.create!(attributes)
243
+
244
+ query = <<~GRAPHQL
245
+ query($representations: [_Any!]!) {
246
+ _entities(representations: $representations) {
247
+ ... on BlogPost {
248
+ id
249
+ title
250
+ body
251
+ }
252
+ }
253
+ }
254
+ GRAPHQL
255
+
256
+ variables = { representations: [{ __typename: "BlogPost", id: blog_post.id }] }
257
+
258
+ result = Schema.execute(query, variables: variables)
259
+
260
+ expect(result.dig("data", "_entities", 0, "id")).to eq(blog_post.id)
261
+ end
262
+ ```
263
+
264
+ See discussion at [#74](https://github.com/Gusto/apollo-federation-ruby/issues/74) and an [internal spec that resolves \_entities](https://github.com/Gusto/apollo-federation-ruby/blob/1d3baf4f8efcd02e7bf5bc7e3fee5b4fb963cd25/spec/apollo-federation/entities_field_spec.rb#L164) for more details.
186
265
 
187
266
  ## Known Issues and Limitations
188
- - Only works with class-based schemas, the legacy `.define` API will not be supported
189
- - Does not add directives to the output of `Schema.to_definition`. Since `graphql-ruby` doesn't natively support schema directives, the directives will only be visible to the [Apollo Gateway](https://www.apollographql.com/docs/apollo-server/api/apollo-gateway/) through the `Query._service` field (see the [Apollo Federation specification](https://www.apollographql.com/docs/apollo-server/federation/federation-spec/))
267
+
268
+ - Only works with class-based schemas, the legacy `.define` API will not be supported
269
+ - Does not add directives to the output of `Schema.to_definition`. Since `graphql-ruby` doesn't natively support schema directives, the directives will only be visible to the [Apollo Gateway](https://www.apollographql.com/docs/apollo-server/api/apollo-gateway/) through the `Query._service` field (see the [Apollo Federation specification](https://www.apollographql.com/docs/apollo-server/federation/federation-spec/)) or via [`Schema#federation_sdl`](https://github.com/Gusto/apollo-federation-ruby/blob/1d3baf4f8efcd02e7bf5bc7e3fee5b4fb963cd25/lib/apollo-federation/schema.rb#L19) as explained above.
190
270
 
191
271
  ## Maintainers
192
- * [Rylan Collins](https://github.com/rylanc)
193
- * [Noa Elad](https://github.com/noaelad)
272
+
273
+ - [Rylan Collins](https://github.com/rylanc)
274
+ - [Noa Elad](https://github.com/noaelad)
@@ -8,11 +8,7 @@ require 'apollo-federation/federated_document_from_schema_definition.rb'
8
8
  module ApolloFederation
9
9
  module Schema
10
10
  def self.included(klass)
11
- if Gem::Version.new(GraphQL::VERSION) >= Gem::Version.new('1.10.0')
12
- klass.extend(OneTenMethods)
13
- else
14
- klass.extend(OneNineMethods)
15
- end
11
+ klass.extend(CommonMethods)
16
12
  end
17
13
 
18
14
  module CommonMethods
@@ -21,53 +17,6 @@ module ApolloFederation
21
17
  GraphQL::Language::Printer.new.print(document_from_schema.document)
22
18
  end
23
19
 
24
- private
25
-
26
- def federation_query(query_obj)
27
- # Build the new query object with the '_service' field
28
- if query_obj.nil?
29
- base = GraphQL::Schema::Object
30
- elsif Gem::Version.new(GraphQL::VERSION) >= Gem::Version.new('1.10.0')
31
- base = query_obj
32
- else
33
- base = query_obj.metadata[:type_class]
34
- end
35
-
36
- klass = Class.new(base) do
37
- # TODO: Maybe the name should inherit from the original Query name
38
- # Or MAYBE we should just modify the original class?
39
- graphql_name 'Query'
40
-
41
- include EntitiesField
42
- include ServiceField
43
- end
44
-
45
- klass.define_service_field
46
- klass
47
- end
48
- end
49
-
50
- # TODO: Remove these once we drop support for graphql 1.9
51
- module OneNineMethods
52
- include CommonMethods
53
-
54
- def to_graphql
55
- orig_defn = super
56
- @query_object = federation_query(query)
57
-
58
- possible_entities = orig_defn.types.values.select do |type|
59
- !type.introspection? && !type.default_scalar? && type.is_a?(GraphQL::ObjectType) &&
60
- type.metadata[:federation_directives]&.any? { |directive| directive[:name] == 'key' }
61
- end
62
- @query_object.define_entities_field(possible_entities)
63
-
64
- super
65
- end
66
- end
67
-
68
- module OneTenMethods
69
- include CommonMethods
70
-
71
20
  def query(new_query_object = nil)
72
21
  if new_query_object
73
22
  @orig_query_object = new_query_object
@@ -100,6 +49,29 @@ module ApolloFederation
100
49
  type.federation_directives&.any? { |directive| directive[:name] == 'key' }
101
50
  end
102
51
  end
52
+
53
+ def federation_query(query_obj)
54
+ # Build the new query object with the '_service' field
55
+ if query_obj.nil?
56
+ base = GraphQL::Schema::Object
57
+ elsif Gem::Version.new(GraphQL::VERSION) >= Gem::Version.new('1.10.0')
58
+ base = query_obj
59
+ else
60
+ base = query_obj.metadata[:type_class]
61
+ end
62
+
63
+ klass = Class.new(base) do
64
+ # TODO: Maybe the name should inherit from the original Query name
65
+ # Or MAYBE we should just modify the original class?
66
+ graphql_name 'Query'
67
+
68
+ include EntitiesField
69
+ include ServiceField
70
+ end
71
+
72
+ klass.define_service_field
73
+ klass
74
+ end
103
75
  end
104
76
  end
105
77
  end
@@ -19,7 +19,7 @@ module ApolloFederation
19
19
 
20
20
  def _service
21
21
  schema_class = context.schema.is_a?(GraphQL::Schema) ? context.schema.class : context.schema
22
- { sdl: schema_class.federation_sdl(context: context) }
22
+ { sdl: schema_class.federation_sdl(context: context.to_h) }
23
23
  end
24
24
  end
25
25
  end
@@ -35,15 +35,15 @@ module ApolloFederation
35
35
  module Tracing
36
36
  module Tracer
37
37
  # store string constants to avoid creating new strings for each call to .trace
38
- EXECUTE_QUERY = 'execute_query'
38
+ EXECUTE_MULTIPLEX = 'execute_multiplex'
39
39
  EXECUTE_QUERY_LAZY = 'execute_query_lazy'
40
40
  EXECUTE_FIELD = 'execute_field'
41
41
  EXECUTE_FIELD_LAZY = 'execute_field_lazy'
42
42
 
43
43
  def self.trace(key, data, &block)
44
44
  case key
45
- when EXECUTE_QUERY
46
- execute_query(data, &block)
45
+ when EXECUTE_MULTIPLEX
46
+ execute_multiplex(data, &block)
47
47
  when EXECUTE_QUERY_LAZY
48
48
  execute_query_lazy(data, &block)
49
49
  when EXECUTE_FIELD
@@ -55,19 +55,26 @@ module ApolloFederation
55
55
  end
56
56
  end
57
57
 
58
- # Step 1:
59
- # Create a trace hash on the query context and record start times.
60
- def self.execute_query(data, &block)
61
- query = data.fetch(:query)
62
- return block.call unless query.context && query.context[:tracing_enabled]
58
+ def self.execute_multiplex(data, &block)
59
+ # Step 1:
60
+ # Create a trace hash on each query's context and record start times.
61
+ data.fetch(:multiplex).queries.each { |query| start_trace(query) }
62
+
63
+ results = block.call
64
+
65
+ # Step 5
66
+ # Attach the trace to the 'extensions' key of each result
67
+ results.map { |result| attach_trace_to_result(result) }
68
+ end
69
+
70
+ def self.start_trace(query)
71
+ return unless query.context && query.context[:tracing_enabled]
63
72
 
64
73
  query.context.namespace(ApolloFederation::Tracing::KEY).merge!(
65
74
  start_time: Time.now.utc,
66
75
  start_time_nanos: Process.clock_gettime(Process::CLOCK_MONOTONIC, :nanosecond),
67
76
  node_map: NodeMap.new,
68
77
  )
69
-
70
- block.call
71
78
  end
72
79
 
73
80
  # Step 4:
@@ -188,6 +195,37 @@ module ApolloFederation
188
195
  result
189
196
  end
190
197
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
198
+
199
+ def self.attach_trace_to_result(result)
200
+ return result unless result.context[:tracing_enabled]
201
+
202
+ trace = result.context.namespace(ApolloFederation::Tracing::KEY)
203
+
204
+ result['errors']&.each do |error|
205
+ trace[:node_map].add_error(error)
206
+ end
207
+
208
+ proto = ApolloFederation::Tracing::Trace.new(
209
+ start_time: to_proto_timestamp(trace[:start_time]),
210
+ end_time: to_proto_timestamp(trace[:end_time]),
211
+ duration_ns: trace[:end_time_nanos] - trace[:start_time_nanos],
212
+ root: trace[:node_map].root,
213
+ )
214
+
215
+ result[:extensions] ||= {}
216
+ result[:extensions][ApolloFederation::Tracing::KEY] =
217
+ Base64.encode64(proto.class.encode(proto))
218
+
219
+ if result.context[:debug_tracing]
220
+ result[:extensions][ApolloFederation::Tracing::DEBUG_KEY] = proto.to_h
221
+ end
222
+
223
+ result
224
+ end
225
+
226
+ def self.to_proto_timestamp(time)
227
+ Google::Protobuf::Timestamp.new(seconds: time.to_i, nanos: time.nsec)
228
+ end
191
229
  end
192
230
  end
193
231
  end
@@ -4,14 +4,6 @@ module ApolloFederation
4
4
  module Tracing
5
5
  KEY = :ftv1
6
6
  DEBUG_KEY = "#{KEY}_debug".to_sym
7
- class NotInstalledError < StandardError
8
- MESSAGE = 'Apollo Federation Tracing not installed. \
9
- Add `use ApolloFederation::Tracing` to your schema.'
10
-
11
- def message
12
- MESSAGE
13
- end
14
- end
15
7
 
16
8
  module_function
17
9
 
@@ -23,37 +15,10 @@ Add `use ApolloFederation::Tracing` to your schema.'
23
15
  headers && headers['apollo-federation-include-trace'] == KEY.to_s
24
16
  end
25
17
 
26
- def attach_trace_to_result(result)
27
- return result unless result.context[:tracing_enabled]
28
-
29
- trace = result.context.namespace(KEY)
30
- # TODO: If there are errors during query validation, that could also cause a missing
31
- # start_time
32
- raise NotInstalledError unless trace[:start_time]
33
-
34
- result['errors']&.each do |error|
35
- trace[:node_map].add_error(error)
36
- end
37
-
38
- proto = ApolloFederation::Tracing::Trace.new(
39
- start_time: to_proto_timestamp(trace[:start_time]),
40
- end_time: to_proto_timestamp(trace[:end_time]),
41
- duration_ns: trace[:end_time_nanos] - trace[:start_time_nanos],
42
- root: trace[:node_map].root,
43
- )
44
-
45
- result[:extensions] ||= {}
46
- result[:extensions][KEY] = Base64.encode64(proto.class.encode(proto))
47
-
48
- if result.context[:debug_tracing]
49
- result[:extensions][DEBUG_KEY] = proto.to_h
50
- end
51
-
52
- result.to_h
53
- end
54
-
55
- def to_proto_timestamp(time)
56
- Google::Protobuf::Timestamp.new(seconds: time.to_i, nanos: time.nsec)
18
+ # @deprecated There is no need to call this method. Traces are added to the result automatically
19
+ def attach_trace_to_result(_result)
20
+ warn '[DEPRECATION] `attach_trace_to_result` is deprecated. There is no need to call it, as '\
21
+ 'traces are added to the result automatically'
57
22
  end
58
23
  end
59
24
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ApolloFederation
4
- VERSION = '1.1.3'
4
+ VERSION = '2.0.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apollo-federation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noa Elad
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-07-16 00:00:00.000000000 Z
12
+ date: 2022-01-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: graphql
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 1.9.8
20
+ version: 1.10.14
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 1.9.8
27
+ version: 1.10.14
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: google-protobuf
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '3.7'
34
+ version: 3.13.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '3.7'
41
+ version: 3.13.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: actionpack
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -191,8 +191,6 @@ files:
191
191
  - LICENSE
192
192
  - README.md
193
193
  - bin/generate-protos.sh
194
- - bin/prepare.rb
195
- - bin/publish.rb
196
194
  - bin/rspec
197
195
  - lib/apollo-federation.rb
198
196
  - lib/apollo-federation/any.rb
@@ -236,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
234
  - !ruby/object:Gem::Version
237
235
  version: '0'
238
236
  requirements: []
239
- rubygems_version: 3.0.3
237
+ rubygems_version: 3.0.3.1
240
238
  signing_key:
241
239
  specification_version: 4
242
240
  summary: A Ruby implementation of Apollo Federation
data/bin/prepare.rb DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- def set_version
4
- new_version = ARGV[0]
5
-
6
- contents = File.read('lib/apollo-federation/version.rb')
7
-
8
- new_contents = contents.gsub(/VERSION = '[0-9.]*'/, "VERSION = '#{new_version}'")
9
- File.write('lib/apollo-federation/version.rb', new_contents)
10
- end
11
-
12
- def bundle_install
13
- system('bundle exec appraisal install')
14
- end
15
-
16
- def build_gem
17
- system('gem build apollo-federation.gemspec')
18
- end
19
-
20
- set_version
21
- bundle_install
22
- build_gem
data/bin/publish.rb DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- new_version = ARGV[0]
4
- gem_name = "apollo-federation-#{new_version}.gem"
5
- system("gem push #{gem_name}")
6
- File.delete(gem_name)