graphql-hive 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +41 -2
- data/k6/graphql-api/Gemfile.lock +1 -1
- data/lib/graphql-hive/usage_reporter.rb +25 -11
- data/lib/graphql-hive/version.rb +1 -1
- data/lib/graphql-hive.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: be9427b081e7a486adf0537b3afa6e073c6c31eba88acae351589d0e1f708c87
|
4
|
+
data.tar.gz: de06ee85feb0ddd539a248534fdfe642aab8a8bb693f0cb66f0519f53ab95e11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eae35b3398dfbf84327efcca83c3ccc206e50698b64646359b6134143b516f2c50a51504cd6a8165ced58487b526d7c019aa95235cb2ba6132146e61e75694af
|
7
|
+
data.tar.gz: 96377bff1cf7c9f7e4e69847f68dc8143bc68702cfedfc6359f0147c16e534e660dcb871f3464a361ec082910a75db2b7ae8410cd6926a6df387ba0143c05cb4
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
graphql-hive (0.
|
4
|
+
graphql-hive (0.3.0)
|
5
5
|
graphql (~> 2.0.9)
|
6
6
|
|
7
7
|
GEM
|
@@ -9,7 +9,7 @@ GEM
|
|
9
9
|
specs:
|
10
10
|
ast (2.4.2)
|
11
11
|
diff-lcs (1.5.0)
|
12
|
-
graphql (2.0.
|
12
|
+
graphql (2.0.16)
|
13
13
|
parallel (1.22.1)
|
14
14
|
parser (3.1.2.0)
|
15
15
|
ast (~> 2.4.1)
|
data/README.md
CHANGED
@@ -64,6 +64,44 @@ If you only want to use the operations monitoring, replace the `reporting` optio
|
|
64
64
|
|
65
65
|
<br/>
|
66
66
|
|
67
|
+
## 3. (Optional) Configure Lifecycle Hooks
|
68
|
+
|
69
|
+
Calling these hooks are situational - it's likely that you may not need to call
|
70
|
+
them at all!
|
71
|
+
|
72
|
+
### `on_start`
|
73
|
+
|
74
|
+
Call this hook if you are running `GraphQL::Hive` in a process that `fork`s
|
75
|
+
itself.
|
76
|
+
|
77
|
+
example: `puma` web server running in (["clustered
|
78
|
+
mode"](https://github.com/puma/puma/tree/6d8b728b42a61bcf3c1e4c698c9165a45e6071e8#clustered-mode))
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
# config/puma.rb
|
82
|
+
preload_app!
|
83
|
+
|
84
|
+
on_worker_boot do
|
85
|
+
GraphQL::Hive.instance.on_start
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
89
|
+
### `on_exit`
|
90
|
+
|
91
|
+
If your GraphQL API process is shut down non-gracefully but has a shutdown hook
|
92
|
+
to call into, call `on_worker_exit`.
|
93
|
+
|
94
|
+
`puma` example:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
# config/puma.rb
|
98
|
+
|
99
|
+
on_worker_shutdown do
|
100
|
+
GraphQL::Hive.instance.on_exit
|
101
|
+
end
|
102
|
+
```
|
103
|
+
|
104
|
+
<br />
|
67
105
|
|
68
106
|
**You are all set! 🚀**
|
69
107
|
|
@@ -74,7 +112,7 @@ When deploying or starting up your GraphQL API, `graphql-hive` will immediately:
|
|
74
112
|
|
75
113
|
<br/>
|
76
114
|
|
77
|
-
##
|
115
|
+
## 4. See how your GraphQL API is operating
|
78
116
|
|
79
117
|
You should now see operations information (RPM, error rate, queries performed) on your [GraphQL Hive dashboard](https://app.graphql-hive.com/):
|
80
118
|
|
@@ -86,7 +124,7 @@ You should now see operations information (RPM, error rate, queries performed) o
|
|
86
124
|
<br/>
|
87
125
|
|
88
126
|
|
89
|
-
##
|
127
|
+
## 5. Going further: use the Hive Github app
|
90
128
|
|
91
129
|
Stay on top of your GraphQL Schema changes by installing the Hive Github Application and enabling Slack notifications about breaking changes:
|
92
130
|
|
@@ -117,6 +155,7 @@ class MySchema < GraphQL::Schema
|
|
117
155
|
endpoint: 'app.graphql-hive.com', # optional
|
118
156
|
port: 80, # optional
|
119
157
|
buffer_size: 50, # forward the operations data to Hive every 50 requests
|
158
|
+
collect_usage_sampling: 1.0,
|
120
159
|
reporting: { # mandatory if `report_schema: true`
|
121
160
|
# mandatory member of `reporting`
|
122
161
|
author: 'Author of the latest change',
|
data/k6/graphql-api/Gemfile.lock
CHANGED
@@ -27,6 +27,31 @@ module GraphQL
|
|
27
27
|
|
28
28
|
@options_mutex = Mutex.new
|
29
29
|
@queue = Queue.new
|
30
|
+
|
31
|
+
start_thread
|
32
|
+
end
|
33
|
+
|
34
|
+
def add_operation(operation)
|
35
|
+
@queue.push(operation)
|
36
|
+
end
|
37
|
+
|
38
|
+
def on_exit
|
39
|
+
@queue.close
|
40
|
+
@thread.join
|
41
|
+
end
|
42
|
+
|
43
|
+
def on_start
|
44
|
+
start_thread
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def start_thread
|
50
|
+
if @thread&.alive?
|
51
|
+
@options[:logger].warn('Tried to start operations flushing thread but it was already alive')
|
52
|
+
return
|
53
|
+
end
|
54
|
+
|
30
55
|
@thread = Thread.new do
|
31
56
|
buffer = []
|
32
57
|
while (operation = @queue.pop(false))
|
@@ -47,17 +72,6 @@ module GraphQL
|
|
47
72
|
end
|
48
73
|
end
|
49
74
|
|
50
|
-
def add_operation(operation)
|
51
|
-
@queue.push(operation)
|
52
|
-
end
|
53
|
-
|
54
|
-
def on_exit
|
55
|
-
@queue.close
|
56
|
-
@thread.join
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
75
|
def process_operations(operations)
|
62
76
|
report = {
|
63
77
|
size: 0,
|
data/lib/graphql-hive/version.rb
CHANGED
data/lib/graphql-hive.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql-hive
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charly POLY
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|