artemis 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +39 -4
- data/Appraisals +33 -13
- data/CHANGELOG.md +17 -6
- data/Gemfile +0 -1
- data/README.md +60 -30
- data/artemis.gemspec +8 -8
- data/banner.png +0 -0
- data/gemfiles/rails_40.gemfile +11 -0
- data/gemfiles/rails_41.gemfile +12 -0
- data/gemfiles/rails_42.gemfile +3 -3
- data/gemfiles/rails_50.gemfile +4 -3
- data/gemfiles/rails_51.gemfile +3 -3
- data/gemfiles/rails_52.gemfile +3 -3
- data/gemfiles/rails_60.gemfile +11 -0
- data/gemfiles/rails_edge.gemfile +1 -1
- data/lib/artemis.rb +32 -1
- data/lib/artemis/adapters/abstract_adapter.rb +5 -0
- data/lib/artemis/adapters/curb_adapter.rb +1 -1
- data/lib/artemis/adapters/net_http_adapter.rb +1 -3
- data/lib/artemis/client.rb +30 -12
- data/lib/artemis/graphql_endpoint.rb +13 -1
- data/lib/artemis/railtie.rb +14 -12
- data/lib/artemis/test_helper.rb +1 -1
- data/lib/artemis/version.rb +1 -1
- data/lib/generators/artemis/install/install_generator.rb +2 -2
- data/lib/tasks/artemis.rake +3 -3
- data/spec/adapters_spec.rb +7 -5
- data/spec/client_spec.rb +26 -1
- data/spec/spec_helper.rb +1 -0
- metadata +30 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb8351e9d06cd0d45eec2321fbdea32691030d55b717145a8165df83d0fd91f3
|
4
|
+
data.tar.gz: 98f117a37598ece1f224b50cedbfa8587432c8440da16ca179460a9732604ed7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2933d4c334cf13af3f923f7915c5eae745837667bb0f1322310944fb3a54ef117ab1666b38e242814bd433e27b8dfb96691b38e2aaa1e271882fe4e6c4952fa5
|
7
|
+
data.tar.gz: 9c780829798e9a3bff896bcf6b52aa97918eea1c93336f4295f0bf478030dbeeb53670d1f6f0b4c96776e59cb35cf6935ce61eec3ca9d538462d3527f50936a6
|
data/.travis.yml
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
|
1
|
+
language: ruby
|
2
2
|
script: bundle exec rake
|
3
3
|
cache: bundler
|
4
4
|
sudo: false
|
5
5
|
|
6
|
-
before_install: gem install bundler -v 1.
|
6
|
+
before_install: gem install bundler -v 1.17.3
|
7
7
|
|
8
8
|
rvm:
|
9
|
-
- 2.6.
|
10
|
-
- 2.5.
|
9
|
+
- 2.6.2
|
10
|
+
- 2.5.5
|
11
11
|
- 2.4.5
|
12
12
|
- 2.3.8
|
13
13
|
- ruby-head
|
@@ -15,10 +15,13 @@ rvm:
|
|
15
15
|
# - jruby-head
|
16
16
|
|
17
17
|
gemfile:
|
18
|
+
- gemfiles/rails_60.gemfile
|
18
19
|
- gemfiles/rails_52.gemfile
|
19
20
|
- gemfiles/rails_51.gemfile
|
20
21
|
- gemfiles/rails_50.gemfile
|
21
22
|
- gemfiles/rails_42.gemfile
|
23
|
+
- gemfiles/rails_41.gemfile
|
24
|
+
- gemfiles/rails_40.gemfile
|
22
25
|
- gemfiles/rails_edge.gemfile
|
23
26
|
|
24
27
|
matrix:
|
@@ -27,8 +30,40 @@ matrix:
|
|
27
30
|
# - rvm: jruby-9.2.3.0
|
28
31
|
# - rvm: jruby-head
|
29
32
|
- gemfile: gemfiles/rails_edge.gemfile
|
33
|
+
- gemfile: gemfiles/rails_41.gemfile
|
34
|
+
- gemfile: gemfiles/rails_40.gemfile
|
30
35
|
exclude:
|
36
|
+
- rvm: ruby-head
|
37
|
+
gemfile: gemfiles/rails_40.gemfile
|
38
|
+
- rvm: ruby-head
|
39
|
+
gemfile: gemfiles/rails_41.gemfile
|
40
|
+
- rvm: ruby-head
|
41
|
+
gemfile: gemfiles/rails_42.gemfile
|
42
|
+
- rvm: 2.6.2
|
43
|
+
gemfile: gemfiles/rails_50.gemfile
|
44
|
+
- rvm: 2.6.2
|
45
|
+
gemfile: gemfiles/rails_42.gemfile
|
46
|
+
- rvm: 2.6.2
|
47
|
+
gemfile: gemfiles/rails_41.gemfile
|
48
|
+
- rvm: 2.6.2
|
49
|
+
gemfile: gemfiles/rails_40.gemfile
|
50
|
+
- rvm: 2.5.5
|
51
|
+
gemfile: gemfiles/rails_50.gemfile
|
52
|
+
- rvm: 2.5.5
|
53
|
+
gemfile: gemfiles/rails_42.gemfile
|
54
|
+
- rvm: 2.5.5
|
55
|
+
gemfile: gemfiles/rails_41.gemfile
|
56
|
+
- rvm: 2.5.5
|
57
|
+
gemfile: gemfiles/rails_40.gemfile
|
31
58
|
- rvm: 2.4.5
|
32
59
|
gemfile: gemfiles/rails_edge.gemfile
|
60
|
+
- rvm: 2.4.5
|
61
|
+
gemfile: gemfiles/rails_60.gemfile
|
62
|
+
- rvm: 2.4.5
|
63
|
+
gemfile: gemfiles/rails_41.gemfile
|
64
|
+
- rvm: 2.4.5
|
65
|
+
gemfile: gemfiles/rails_40.gemfile
|
33
66
|
- rvm: 2.3.8
|
34
67
|
gemfile: gemfiles/rails_edge.gemfile
|
68
|
+
- rvm: 2.3.8
|
69
|
+
gemfile: gemfiles/rails_60.gemfile
|
data/Appraisals
CHANGED
@@ -1,32 +1,52 @@
|
|
1
1
|
appraise "rails_edge" do
|
2
|
-
git '
|
2
|
+
git 'https://github.com/rails/rails.git' do
|
3
3
|
gem "rails"
|
4
4
|
gem "railties"
|
5
5
|
gem "activesupport"
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
+
appraise "rails_60" do
|
10
|
+
gem "rails", '~> 6.0.0.rc1'
|
11
|
+
gem "railties", '~> 6.0.0.rc1'
|
12
|
+
gem "activesupport", '~> 6.0.0.rc1'
|
13
|
+
end
|
14
|
+
|
9
15
|
appraise "rails_52" do
|
10
|
-
gem "rails", '~> 5.2'
|
11
|
-
gem "railties", '~> 5.2'
|
12
|
-
gem "activesupport", '~> 5.2'
|
16
|
+
gem "rails", '~> 5.2.0'
|
17
|
+
gem "railties", '~> 5.2.0'
|
18
|
+
gem "activesupport", '~> 5.2.0'
|
13
19
|
end
|
14
20
|
|
15
21
|
appraise "rails_51" do
|
16
|
-
gem "rails", '~> 5.1'
|
17
|
-
gem "railties", '~> 5.1'
|
18
|
-
gem "activesupport", '~> 5.1'
|
22
|
+
gem "rails", '~> 5.1.0'
|
23
|
+
gem "railties", '~> 5.1.0'
|
24
|
+
gem "activesupport", '~> 5.1.0'
|
19
25
|
end
|
20
26
|
|
21
27
|
appraise "rails_50" do
|
22
|
-
gem "rails", '~> 5.0'
|
23
|
-
gem "railties", '~> 5.0'
|
24
|
-
gem "activesupport", '~> 5.0'
|
28
|
+
gem "rails", '~> 5.0.0'
|
29
|
+
gem "railties", '~> 5.0.0'
|
30
|
+
gem "activesupport", '~> 5.0.0'
|
31
|
+
gem "minitest", '5.10.3'
|
25
32
|
end
|
26
33
|
|
27
34
|
appraise "rails_42" do
|
28
|
-
gem "rails", '~> 4.2'
|
29
|
-
gem "railties", '~> 4.2'
|
30
|
-
gem "activesupport", '~> 4.2'
|
35
|
+
gem "rails", '~> 4.2.0'
|
36
|
+
gem "railties", '~> 4.2.0'
|
37
|
+
gem "activesupport", '~> 4.2.0'
|
38
|
+
gem "minitest", '5.10.3'
|
39
|
+
end
|
40
|
+
|
41
|
+
appraise "rails_41" do
|
42
|
+
gem "rails", '~> 4.1.0'
|
43
|
+
gem "railties", '~> 4.1.0'
|
44
|
+
gem "activesupport", '~> 4.1.0'
|
31
45
|
gem "minitest", '5.10.3'
|
32
46
|
end
|
47
|
+
|
48
|
+
appraise "rails_40" do
|
49
|
+
gem "rails", '~> 4.0.0'
|
50
|
+
gem "railties", '~> 4.0.0'
|
51
|
+
gem "activesupport", '~> 4.0.0'
|
52
|
+
end
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,19 @@
|
|
1
|
-
##
|
1
|
+
## [v0.4.0](https://github.com/yuki24/artemis/tree/v0.4.0)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
_<sup>released at 2019-01-30 03:42:14 UTC</sup>_
|
4
|
+
|
5
|
+
#### Features
|
6
|
+
|
7
|
+
- [<tt>48d052e</tt>](https://github.com/yuki24/artemis/commit/48d052e9819703f1cefa95fbdb431bd03928f4ed): Add an easy way to set up Rspec integration
|
8
|
+
- [<tt>0f7cd12</tt>](https://github.com/yuki24/artemis/commit/0f7cd120594a0dd2a4af2b2e5cf990891dd8de16): Make Artemis' Railtie configurable
|
9
|
+
- [<tt>6bd15e2</tt>](https://github.com/yuki24/artemis/commit/6bd15e20779e5a6f898e1aacf8237c94c8c46aba): Add the ability to use ERB in test fixtures
|
10
|
+
- [#49](https://github.com/yuki24/artemis/pull/49): Expose the TestAdapter as a public API
|
11
|
+
|
12
|
+
#### Bug fixes
|
13
|
+
|
14
|
+
- [<tt>b7ad4a4</tt>](https://github.com/yuki24/artemis/commit/b7ad4a481a43cadd9193076c0e44938e05e6d44b): Require `graphl >= 1.8` to fix a bug in the generator
|
15
|
+
- [#48](https://github.com/yuki24/artemis/pull/48): Do not transform keys of query variables ([@erikdstock](https://github.com/erikdstock))
|
16
|
+
- [#47](https://github.com/yuki24/artemis/pull/47): Fixes an issue where errors thrown from `config/graphql.yml` get swallowed
|
6
17
|
|
7
18
|
## [v0.2.0: New generators and small improvements](https://github.com/yuki24/artemis/tree/v0.2.0)
|
8
19
|
|
@@ -14,11 +25,11 @@ _<sup>released at 2018-10-30 02:09:59 UTC</sup>_
|
|
14
25
|
- [#42](https://github.com/yuki24/artemis/pull/42): Allow for setting up the test adapter without `url`
|
15
26
|
- [#41](https://github.com/yuki24/artemis/pull/41): Add a mutation generator
|
16
27
|
- [#40](https://github.com/yuki24/artemis/pull/40): Add a query generator
|
17
|
-
- [#39](https://github.com/yuki24/artemis/pull/39): Installer now adds a new service if config/graphql.yml is present
|
28
|
+
- [#39](https://github.com/yuki24/artemis/pull/39): Installer now adds a new service if `config/graphql.yml` is present
|
18
29
|
|
19
30
|
## [v0.1.0: First release!](https://github.com/yuki24/artemis/tree/v0.1.0)
|
20
31
|
|
21
32
|
_<sup>released at 2018-10-16 20:57:51 UTC</sup>_
|
22
33
|
|
23
|
-
First release of Artemis! <g-emoji class="g-emoji" alias="tada" fallback-src="https://
|
34
|
+
First release of Artemis! <g-emoji class="g-emoji" alias="tada" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f389.png">🎉</g-emoji>
|
24
35
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -12,24 +12,7 @@ Artemis is a GraphQL client that is designed to fit well on Rails.
|
|
12
12
|
|
13
13
|
<img width="24" height="24" src="https://avatars1.githubusercontent.com/u/541332?s=48&v=4"> Battle-tested at [Artsy](https://www.artsy.net)
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
You could set up Artemis with just a few commands. See it in action:
|
18
|
-
|
19
|
-
```bash
|
20
|
-
$ bundle add artemis
|
21
|
-
$ rails g artemis:install artsy https://metaphysics-production.artsy.net/
|
22
|
-
$ echo '
|
23
|
-
query($id: String!) {
|
24
|
-
artist(id: $id) {
|
25
|
-
name
|
26
|
-
birthday
|
27
|
-
}
|
28
|
-
}' > app/operations/artsy/artist.graphql
|
29
|
-
$ rails c
|
30
|
-
> Artsy.artist(id: "leonardo-da-vinci").data.artist.name # => "Leonardo da Vinci"
|
31
|
-
> Artsy.artist(id: "leonardo-da-vinci").data.artist.birthday # => "1452/04/15"
|
32
|
-
```
|
15
|
+
![graphql-client vs Artemis](https://raw.githubusercontent.com/yuki24/artemis/master/banner.png "graphql-client vs Artemis")
|
33
16
|
|
34
17
|
## Getting started
|
35
18
|
|
@@ -39,20 +22,13 @@ Add this line to your application's Gemfile:
|
|
39
22
|
gem 'artemis'
|
40
23
|
```
|
41
24
|
|
42
|
-
And then execute:
|
43
|
-
|
44
|
-
$ bundle
|
45
|
-
|
46
25
|
Once you run `bundle install` on your Rails app, run the install command:
|
47
26
|
|
48
27
|
|
49
28
|
```sh
|
50
29
|
$ rails g artemis:install artsy https://metaphysics-production.artsy.net/
|
51
|
-
```
|
52
|
-
|
53
|
-
You could also use the `--authorization` option to assign a token so the installer can download the GraphQL schema:
|
54
30
|
|
55
|
-
|
31
|
+
# or if you need to specify the `--authorization` header:
|
56
32
|
$ rails g artemis:install github https://api.github.com/graphql --authorization 'token ...'
|
57
33
|
```
|
58
34
|
|
@@ -169,14 +145,68 @@ There are four adapter options available. Choose the adapter that best fits on y
|
|
169
145
|
| `:net_http_persistent` | HTTP/1.1 only | **Yes** | **Fast** | [`net-http-persistent 3.0.0+`][nhp]
|
170
146
|
| `:test` | N/A (See Testing)
|
171
147
|
|
148
|
+
### Third-party adapters
|
149
|
+
|
150
|
+
This is a comminuty-maintained adapter. Want to add yours? Send us a pull request!
|
151
|
+
|
152
|
+
| Adapter | Description |
|
153
|
+
| ---------------------- | ------------|
|
154
|
+
| [`:net_http_hmac`](https://github.com/JanStevens/artemis-api-auth/tree/master) | provides a new Adapter for the Artemis GraphQL ruby client to support HMAC Authentication using [ApiAuth](https://github.com/mgomes/api_auth). |
|
155
|
+
|
156
|
+
### Writing your own adapter
|
157
|
+
|
158
|
+
When the built-in adapters do not satisfy your needs, you may want to implement your own adapter. You could do so by following the steps below. Let's implement the [`:net_http_hmac`](https://github.com/JanStevens/artemis-api-auth/tree/master) adapter as an example.
|
159
|
+
|
160
|
+
1. Define `NetHttpHmacAdapter` under the `Artemis::Adapters` namespace and implement [the `#execute` method](https://github.com/github/graphql-client/blob/master/guides/remote-queries.md):
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
# lib/artemis/adapters/net_http_hmac_adapter.rb
|
164
|
+
module Artemis::Adapters
|
165
|
+
class NetHttpHmacAdapter
|
166
|
+
def execute(document:, operation_name: nil, variables: {}, context: {})
|
167
|
+
# Makes an HTTP request for GraphQL query.
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
```
|
172
|
+
|
173
|
+
2. Load the adapter in `config/initializers/artemis.rb` (or any place that gets loaded before Rails runs initializers):
|
174
|
+
|
175
|
+
```ruby
|
176
|
+
require 'artemis/adapters/net_http_hmac_adapter'
|
177
|
+
```
|
178
|
+
|
179
|
+
3. Specify the adapter name in `config/graphql.yml`:
|
180
|
+
|
181
|
+
```yml
|
182
|
+
default: &default
|
183
|
+
adapter: :net_http_hmac
|
184
|
+
```
|
185
|
+
|
172
186
|
## Rake tasks
|
173
187
|
|
174
188
|
Artemis also adds a useful `rake graphql:schema:update` rake task that downloads the GraphQL schema using the
|
175
189
|
`Introspection` query.
|
176
190
|
|
177
|
-
|
178
|
-
|
179
|
-
|
191
|
+
### `graphql:schema:update`
|
192
|
+
|
193
|
+
Downloads and saves the GraphQL schema.
|
194
|
+
|
195
|
+
| Option Name | Description |
|
196
|
+
| ------------------ | ------------|
|
197
|
+
| `SERVICE` | Service name the schema is downloaded from.|
|
198
|
+
| `AUTHORIZATION` | HTTP `Authorization` header value used to download the schema with.|
|
199
|
+
|
200
|
+
|
201
|
+
#### Examples
|
202
|
+
|
203
|
+
```
|
204
|
+
$ rake graphql:schema:update
|
205
|
+
# => downloads schema from the service. fails if there are multiple services in config/graphql.yml.
|
206
|
+
|
207
|
+
$ rake graphql:schema:update SERVICE=github AUTHORIZATION="token ..."
|
208
|
+
# => downloads schema from the `github` service using the HTTP header "AUTHORIZATION: token ..."
|
209
|
+
```
|
180
210
|
|
181
211
|
## Testing
|
182
212
|
|
@@ -269,4 +299,4 @@ Everyone interacting in the Artemis project’s codebases, issue trackers, chat
|
|
269
299
|
[curb]: https://rubygems.org/gems/curb
|
270
300
|
[curl]: https://curl.haxx.se/docs/http2.html
|
271
301
|
[nghttp]: https://nghttp2.org/
|
272
|
-
[nhp]: https://rubygems.org/gems/net-http-persistent
|
302
|
+
[nhp]: https://rubygems.org/gems/net-http-persistent
|
data/artemis.gemspec
CHANGED
@@ -15,15 +15,15 @@ Gem::Specification.new do |spec|
|
|
15
15
|
spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r{^(test)/}) }
|
16
16
|
spec.require_paths = ["lib"]
|
17
17
|
|
18
|
-
spec.add_dependency "activesupport", ">= 4.
|
18
|
+
spec.add_dependency "activesupport", ">= 4.0.0"
|
19
|
+
spec.add_dependency "railties", ">= 4.0.0"
|
19
20
|
spec.add_dependency "graphql", ">= 1.8"
|
20
21
|
spec.add_dependency "graphql-client", ">= 0.13.0"
|
21
|
-
spec.add_dependency "railties", ">= 4.2.0"
|
22
22
|
|
23
|
-
spec.add_development_dependency "appraisal", "
|
24
|
-
spec.add_development_dependency "bundler", "
|
25
|
-
spec.add_development_dependency "curb", "
|
26
|
-
spec.add_development_dependency "net-http-persistent", "
|
27
|
-
spec.add_development_dependency "rake", "
|
28
|
-
spec.add_development_dependency "rspec", "
|
23
|
+
spec.add_development_dependency "appraisal", ">= 2.2"
|
24
|
+
spec.add_development_dependency "bundler", ">= 1.16"
|
25
|
+
spec.add_development_dependency "curb", ">= 0.9.6"
|
26
|
+
spec.add_development_dependency "net-http-persistent", ">= 3.0"
|
27
|
+
spec.add_development_dependency "rake", ">= 10.0"
|
28
|
+
spec.add_development_dependency "rspec", ">= 3.8"
|
29
29
|
end
|
data/banner.png
ADDED
Binary file
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "https://rubygems.org"
|
4
|
+
|
5
|
+
gem "rails", "~> 4.1.0"
|
6
|
+
gem "pry"
|
7
|
+
gem "pry-byebug", platforms: :mri
|
8
|
+
gem "railties", "~> 4.1.0"
|
9
|
+
gem "activesupport", "~> 4.1.0"
|
10
|
+
gem "minitest", "5.10.3"
|
11
|
+
|
12
|
+
gemspec path: "../"
|
data/gemfiles/rails_42.gemfile
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
+
gem "rails", "~> 4.2.0"
|
5
6
|
gem "pry"
|
6
7
|
gem "pry-byebug", platforms: :mri
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "activesupport", "~> 4.2"
|
8
|
+
gem "railties", "~> 4.2.0"
|
9
|
+
gem "activesupport", "~> 4.2.0"
|
10
10
|
gem "minitest", "5.10.3"
|
11
11
|
|
12
12
|
gemspec path: "../"
|
data/gemfiles/rails_50.gemfile
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
+
gem "rails", "~> 5.0.0"
|
5
6
|
gem "pry"
|
6
7
|
gem "pry-byebug", platforms: :mri
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "
|
8
|
+
gem "railties", "~> 5.0.0"
|
9
|
+
gem "activesupport", "~> 5.0.0"
|
10
|
+
gem "minitest", "5.10.3"
|
10
11
|
|
11
12
|
gemspec path: "../"
|
data/gemfiles/rails_51.gemfile
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
+
gem "rails", "~> 5.1.0"
|
5
6
|
gem "pry"
|
6
7
|
gem "pry-byebug", platforms: :mri
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "activesupport", "~> 5.1"
|
8
|
+
gem "railties", "~> 5.1.0"
|
9
|
+
gem "activesupport", "~> 5.1.0"
|
10
10
|
|
11
11
|
gemspec path: "../"
|
data/gemfiles/rails_52.gemfile
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
|
+
gem "rails", "~> 5.2.0"
|
5
6
|
gem "pry"
|
6
7
|
gem "pry-byebug", platforms: :mri
|
7
|
-
gem "
|
8
|
-
gem "
|
9
|
-
gem "activesupport", "~> 5.2"
|
8
|
+
gem "railties", "~> 5.2.0"
|
9
|
+
gem "activesupport", "~> 5.2.0"
|
10
10
|
|
11
11
|
gemspec path: "../"
|
data/gemfiles/rails_edge.gemfile
CHANGED
data/lib/artemis.rb
CHANGED
@@ -1,3 +1,34 @@
|
|
1
1
|
require "artemis/version"
|
2
2
|
require "artemis/client"
|
3
|
-
require "artemis/railtie" if defined?(Rails)
|
3
|
+
require "artemis/railtie" if defined?(Rails)
|
4
|
+
|
5
|
+
module Artemis
|
6
|
+
def self.config_for_graphql(app)
|
7
|
+
if app.respond_to?(:config_for)
|
8
|
+
app.config_for(:graphql)
|
9
|
+
else
|
10
|
+
config_for(:graphql, app: app)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# backported from https://github.com/rails/rails/blob/b9ca94ca/railties/lib/rails/application.rb#L226
|
15
|
+
# TODO: Remove once dropping Rails <= 4.1 support
|
16
|
+
def self.config_for(name, app:, env: Rails.env)
|
17
|
+
if name.is_a?(Pathname)
|
18
|
+
yaml = name
|
19
|
+
else
|
20
|
+
yaml = Pathname.new("#{app.paths["config"].existent.first}/#{name}.yml")
|
21
|
+
end
|
22
|
+
|
23
|
+
if yaml.exist?
|
24
|
+
require "erb"
|
25
|
+
(YAML.load(ERB.new(yaml.read).result) || {})[env] || {}
|
26
|
+
else
|
27
|
+
raise "Could not load configuration. No such file - #{yaml}"
|
28
|
+
end
|
29
|
+
rescue Psych::SyntaxError => e
|
30
|
+
raise "YAML syntax error occurred while parsing #{yaml}. " \
|
31
|
+
"Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
|
32
|
+
"Error: #{e.message}"
|
33
|
+
end
|
34
|
+
end
|
@@ -10,6 +10,11 @@ module Artemis
|
|
10
10
|
|
11
11
|
EMPTY_HEADERS = {}.freeze
|
12
12
|
|
13
|
+
DEFAULT_HEADERS = {
|
14
|
+
"Accept" => "application/json",
|
15
|
+
"Content-Type" => "application/json"
|
16
|
+
}.freeze
|
17
|
+
|
13
18
|
def initialize(uri, service_name: , timeout: , pool_size: )
|
14
19
|
raise ArgumentError, "url is required (given `#{uri.inspect}')" if uri.blank?
|
15
20
|
|
@@ -15,9 +15,7 @@ module Artemis
|
|
15
15
|
|
16
16
|
request.basic_auth(uri.user, uri.password) if uri.user || uri.password
|
17
17
|
|
18
|
-
request[
|
19
|
-
request["Content-Type"] = "application/json"
|
20
|
-
headers(context).each { |name, value| request[name] = value }
|
18
|
+
DEFAULT_HEADERS.merge(headers(context)).each { |name, value| request[name] = value }
|
21
19
|
|
22
20
|
body = {}
|
23
21
|
body["query"] = document.to_query_string
|
data/lib/artemis/client.rb
CHANGED
@@ -4,6 +4,7 @@ require 'delegate'
|
|
4
4
|
|
5
5
|
require 'active_support/configurable'
|
6
6
|
require 'active_support/core_ext/hash/deep_merge'
|
7
|
+
require 'active_support/core_ext/module/delegation'
|
7
8
|
require 'active_support/core_ext/string/inflections'
|
8
9
|
|
9
10
|
require 'artemis/graphql_endpoint'
|
@@ -205,6 +206,10 @@ module Artemis
|
|
205
206
|
Executor.new(endpoint.connection, callbacks, default_context.deep_merge(context))
|
206
207
|
end
|
207
208
|
|
209
|
+
def execute(query, context: {}, **arguments)
|
210
|
+
new(default_context).execute(query, context: context, **arguments)
|
211
|
+
end
|
212
|
+
|
208
213
|
private
|
209
214
|
|
210
215
|
# Looks up the GraphQL file that matches the given +const_name+ and sets it to a constant. If the files it not
|
@@ -255,6 +260,28 @@ module Artemis
|
|
255
260
|
end
|
256
261
|
end
|
257
262
|
|
263
|
+
# Executes a given query, raises if we didn't define the operation
|
264
|
+
#
|
265
|
+
# @param [String] operation
|
266
|
+
# @param [Hash] context
|
267
|
+
# @param [Hash] arguments
|
268
|
+
#
|
269
|
+
# @return [GraphQL::Client::Response]
|
270
|
+
def execute(query, context: {}, **arguments)
|
271
|
+
if self.class.resolve_graphql_file_path(query)
|
272
|
+
const_name = query.to_s.camelize
|
273
|
+
|
274
|
+
# This check will be unnecessary once we drop support for Ruby 2.4 and earlier
|
275
|
+
if !self.class.const_get(const_name).is_a?(GraphQL::Client::OperationDefinition)
|
276
|
+
self.class.load_constant(const_name)
|
277
|
+
end
|
278
|
+
|
279
|
+
client.query(self.class.const_get(const_name), variables: arguments, context: context)
|
280
|
+
else
|
281
|
+
raise GraphQLFileNotFound.new("Query #{query}.graphql not found in: #{config.query_paths.join(", ")}")
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
258
285
|
private
|
259
286
|
|
260
287
|
# Delegates a method call to a GraphQL call.
|
@@ -268,18 +295,9 @@ module Artemis
|
|
268
295
|
#
|
269
296
|
# @api private
|
270
297
|
def method_missing(method_name, context: {}, **arguments)
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
# This check will be unnecessary once we drop support for Ruby 2.4 and earlier
|
275
|
-
if !self.class.const_get(const_name).is_a?(GraphQL::Client::OperationDefinition)
|
276
|
-
self.class.load_constant(const_name)
|
277
|
-
end
|
278
|
-
|
279
|
-
client.query(self.class.const_get(const_name), variables: arguments, context: context)
|
280
|
-
else
|
281
|
-
super
|
282
|
-
end
|
298
|
+
execute(method_name, context: context, **arguments)
|
299
|
+
rescue GraphQLFileNotFound
|
300
|
+
super
|
283
301
|
end
|
284
302
|
|
285
303
|
def respond_to_missing?(method_name, *_, &block) #:nodoc:
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'active_support/core_ext/hash/deep_merge'
|
4
4
|
require 'active_support/core_ext/hash/keys'
|
5
|
+
require 'active_support/core_ext/class/attribute_accessors'
|
5
6
|
require 'active_support/core_ext/object/blank'
|
6
7
|
require 'active_support/core_ext/string/inflections'
|
7
8
|
require 'graphql/client'
|
@@ -11,6 +12,13 @@ require 'artemis/exceptions'
|
|
11
12
|
|
12
13
|
module Artemis
|
13
14
|
class GraphQLEndpoint
|
15
|
+
|
16
|
+
# Whether or not to suppress warnings on schema load. Use it with caution.
|
17
|
+
#
|
18
|
+
# @private
|
19
|
+
cattr_accessor :suppress_warnings_on_schema_load
|
20
|
+
self.suppress_warnings_on_schema_load = false
|
21
|
+
|
14
22
|
# Hash object that holds references to adapter instances.
|
15
23
|
ENDPOINT_INSTANCES = {}
|
16
24
|
|
@@ -46,9 +54,13 @@ module Artemis
|
|
46
54
|
end
|
47
55
|
|
48
56
|
def schema
|
57
|
+
org, $stderr = $stderr, File.new("/dev/null", "w") if self.class.suppress_warnings_on_schema_load
|
58
|
+
|
49
59
|
@schema || @mutex_for_schema.synchronize do
|
50
60
|
@schema ||= ::GraphQL::Client.load_schema(schema_path.presence || connection)
|
51
61
|
end
|
62
|
+
ensure
|
63
|
+
$stderr = org if self.class.suppress_warnings_on_schema_load
|
52
64
|
end
|
53
65
|
alias load_schema! schema
|
54
66
|
|
@@ -58,4 +70,4 @@ module Artemis
|
|
58
70
|
end
|
59
71
|
end
|
60
72
|
end
|
61
|
-
end
|
73
|
+
end
|
data/lib/artemis/railtie.rb
CHANGED
@@ -31,13 +31,15 @@ module Artemis
|
|
31
31
|
end
|
32
32
|
|
33
33
|
initializer 'graphql.client.set_reloader', after: 'graphql.client.set_query_paths' do |app|
|
34
|
-
|
34
|
+
if !config.respond_to?(:autoloader) || config.autoloader != :zeitwerk
|
35
|
+
files_to_watch = Artemis::Client.query_paths.map {|path| [path, config.artemis.graphql_extentions] }.to_h
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
app.reloaders << ActiveSupport::FileUpdateChecker.new([], files_to_watch) do
|
38
|
+
endpoint_names = Artemis.config_for_graphql(app).keys
|
39
|
+
endpoint_names.each do |endpoint_name|
|
40
|
+
Artemis::Client.query_paths.each do |path|
|
41
|
+
FileUtils.touch("#{path}/#{endpoint_name}.rb")
|
42
|
+
end
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
@@ -45,17 +47,17 @@ module Artemis
|
|
45
47
|
|
46
48
|
initializer 'graphql.client.load_config' do |app|
|
47
49
|
if Pathname.new("#{app.paths["config"].existent.first}/graphql.yml").exist?
|
48
|
-
|
50
|
+
Artemis.config_for_graphql(app).each do |endpoint_name, options|
|
49
51
|
Artemis::GraphQLEndpoint.register!(endpoint_name, {
|
50
|
-
|
51
|
-
}.merge(options))
|
52
|
+
schema_path: app.root.join(config.artemis.schema_path, "#{endpoint_name}.json").to_s
|
53
|
+
}.merge(options.symbolize_keys))
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
55
57
|
|
56
58
|
initializer 'graphql.client.preload', after: 'graphql.client.load_config' do |app|
|
57
|
-
if app.config.eager_load
|
58
|
-
|
59
|
+
if app.config.eager_load && app.config.cache_classes
|
60
|
+
Artemis.config_for_graphql(app).keys.each do |endpoint_name|
|
59
61
|
endpoint_name.to_s.camelize.constantize.preload!
|
60
62
|
end
|
61
63
|
end
|
@@ -65,4 +67,4 @@ module Artemis
|
|
65
67
|
load "tasks/artemis.rake"
|
66
68
|
end
|
67
69
|
end
|
68
|
-
end
|
70
|
+
end
|
data/lib/artemis/test_helper.rb
CHANGED
@@ -9,7 +9,7 @@ require 'artemis/exceptions'
|
|
9
9
|
module Artemis
|
10
10
|
# TODO: Write documentation for +TestHelper+
|
11
11
|
module TestHelper
|
12
|
-
|
12
|
+
mattr_accessor :__graphql_fixture_path__
|
13
13
|
|
14
14
|
# Creates an object that stubs a GraphQL request for the given +service+. No mock response is registered until the
|
15
15
|
# +to_return+ method.
|
data/lib/artemis/version.rb
CHANGED
@@ -56,7 +56,7 @@ YAML
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def client_file_name
|
59
|
-
if mountable_engine?
|
59
|
+
if respond_to?(:mountable_engine?) && mountable_engine?
|
60
60
|
"app/operations/#{namespaced_path}/#{file_name}.rb"
|
61
61
|
else
|
62
62
|
"app/operations/#{file_name}.rb"
|
@@ -64,7 +64,7 @@ YAML
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def query_dir_gitkeep
|
67
|
-
if mountable_engine?
|
67
|
+
if respond_to?(:mountable_engine?) && mountable_engine?
|
68
68
|
"app/operations/#{namespaced_path}/#{file_name}/.gitkeep"
|
69
69
|
else
|
70
70
|
"app/operations/#{file_name}/.gitkeep"
|
data/lib/tasks/artemis.rake
CHANGED
@@ -12,7 +12,7 @@ namespace :graphql do
|
|
12
12
|
service = if ENV['SERVICE']
|
13
13
|
ENV['SERVICE']
|
14
14
|
else
|
15
|
-
services = Rails.application
|
15
|
+
services = Artemis.config_for_graphql(Rails.application).keys
|
16
16
|
|
17
17
|
if services.size == 1
|
18
18
|
services.first
|
@@ -22,7 +22,7 @@ namespace :graphql do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
headers = ENV['AUTHORIZATION'] ? { Authorization: ENV['AUTHORIZATION'] } : {}
|
25
|
-
service_class = service.camelize.constantize
|
25
|
+
service_class = service.to_s.camelize.constantize
|
26
26
|
schema_path = service_class.endpoint.schema_path
|
27
27
|
schema = service_class.connection
|
28
28
|
.execute(
|
@@ -44,4 +44,4 @@ namespace :graphql do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
|
-
end
|
47
|
+
end
|
data/spec/adapters_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe 'Adapters' do
|
|
5
5
|
FakeServer = ->(env) {
|
6
6
|
case env['PATH_INFO']
|
7
7
|
when '/slow_server'
|
8
|
-
sleep
|
8
|
+
sleep 1.1
|
9
9
|
|
10
10
|
[200, {}, ['{}']]
|
11
11
|
when '/500'
|
@@ -14,7 +14,7 @@ describe 'Adapters' do
|
|
14
14
|
body = {
|
15
15
|
data: {
|
16
16
|
body: JSON.parse(env['rack.input'].read),
|
17
|
-
headers: env.select {|key, val| key.
|
17
|
+
headers: env.select {|key, val| key.match("^HTTP.*|^CONTENT.*|^AUTHORIZATION.*") }
|
18
18
|
.collect {|key, val| [key.gsub(/^HTTP_/, ''), val.downcase] }
|
19
19
|
.to_h,
|
20
20
|
},
|
@@ -69,6 +69,8 @@ describe 'Adapters' do
|
|
69
69
|
expect(response['data']['body']['query']).to eq(GraphQL::Client::IntrospectionDocument.to_query_string)
|
70
70
|
expect(response['data']['body']['variables']).to eq('id' => 'yayoi-kusama')
|
71
71
|
expect(response['data']['body']['operationName']).to eq('IntrospectionQuery')
|
72
|
+
expect(response['data']['headers']['CONTENT_TYPE']).to eq('application/json')
|
73
|
+
expect(response['data']['headers']['ACCEPT']).to eq('application/json')
|
72
74
|
expect(response['errors']).to eq([])
|
73
75
|
expect(response['extensions']).to eq({})
|
74
76
|
end
|
@@ -92,14 +94,14 @@ describe 'Adapters' do
|
|
92
94
|
end
|
93
95
|
|
94
96
|
describe Artemis::Adapters::NetHttpAdapter do
|
95
|
-
let(:adapter) { Artemis::Adapters::NetHttpAdapter.new('http://localhost:8000', service_name: nil, timeout:
|
97
|
+
let(:adapter) { Artemis::Adapters::NetHttpAdapter.new('http://localhost:8000', service_name: nil, timeout: 0.5, pool_size: 5) }
|
96
98
|
let(:timeout_error) { Net::ReadTimeout }
|
97
99
|
|
98
100
|
it_behaves_like 'an adapter'
|
99
101
|
end
|
100
102
|
|
101
103
|
describe Artemis::Adapters::NetHttpPersistentAdapter do
|
102
|
-
let(:adapter) { Artemis::Adapters::NetHttpPersistentAdapter.new('http://localhost:8000', service_name: nil, timeout:
|
104
|
+
let(:adapter) { Artemis::Adapters::NetHttpPersistentAdapter.new('http://localhost:8000', service_name: nil, timeout: 0.5, pool_size: 5) }
|
103
105
|
let(:timeout_error) { Net::HTTP::Persistent::Error }
|
104
106
|
|
105
107
|
it_behaves_like 'an adapter'
|
@@ -111,4 +113,4 @@ describe 'Adapters' do
|
|
111
113
|
|
112
114
|
it_behaves_like 'an adapter'
|
113
115
|
end
|
114
|
-
end
|
116
|
+
end
|
data/spec/client_spec.rb
CHANGED
@@ -97,6 +97,31 @@ describe GraphQL::Client do
|
|
97
97
|
GRAPHQL
|
98
98
|
end
|
99
99
|
|
100
|
+
it "can make a GraphQL request with #execute" do
|
101
|
+
Metaphysics.execute(:artist, id: "yayoi-kusama")
|
102
|
+
|
103
|
+
request = requests[0]
|
104
|
+
|
105
|
+
expect(request.operation_name).to eq('Metaphysics__Artist')
|
106
|
+
expect(request.variables).to eq('id' => 'yayoi-kusama')
|
107
|
+
expect(request.context).to eq({})
|
108
|
+
expect(request.document.to_query_string).to eq(<<~GRAPHQL.strip)
|
109
|
+
query Metaphysics__Artist($id: String!) {
|
110
|
+
artist(id: $id) {
|
111
|
+
name
|
112
|
+
bio
|
113
|
+
birthday
|
114
|
+
}
|
115
|
+
}
|
116
|
+
GRAPHQL
|
117
|
+
end
|
118
|
+
|
119
|
+
it "can make a GraphQL request with #execute" do
|
120
|
+
expect { Metaphysics.execute(:does_not_exist) }
|
121
|
+
.to raise_error(Artemis::GraphQLFileNotFound)
|
122
|
+
.with_message(/Query does_not_exist\.graphql not found/)
|
123
|
+
end
|
124
|
+
|
100
125
|
it "assigns context to the request when provided as an argument" do
|
101
126
|
context = { headers: { Authorization: 'bearer ...' } }
|
102
127
|
|
@@ -158,4 +183,4 @@ describe GraphQL::Client do
|
|
158
183
|
ensure
|
159
184
|
files.each {|file| File.delete(file) }
|
160
185
|
end
|
161
|
-
end
|
186
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -12,6 +12,7 @@ require 'pry-byebug' if RUBY_ENGINE == 'ruby'
|
|
12
12
|
# The only method that doesn't need test coverage is +Artemis::Client.query_paths+. The rest of the methods should be
|
13
13
|
# tested, but we don't have any test setup for that yet.
|
14
14
|
Artemis::Client.query_paths = [File.join(__dir__, 'fixtures')]
|
15
|
+
Artemis::GraphQLEndpoint.suppress_warnings_on_schema_load = true
|
15
16
|
Artemis::GraphQLEndpoint.register!(:metaphysics, adapter: :test, url: '', schema_path: 'spec/fixtures/metaphysics/schema.json')
|
16
17
|
Artemis::GraphQLEndpoint.lookup(:metaphysics).load_schema!
|
17
18
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: artemis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Allured
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-06-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -17,138 +17,138 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 4.
|
20
|
+
version: 4.0.0
|
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: 4.
|
27
|
+
version: 4.0.0
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: railties
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 4.0.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:
|
41
|
+
version: 4.0.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name: graphql
|
43
|
+
name: graphql
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: '1.8'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: '1.8'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: graphql-client
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 0.13.0
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 0.13.0
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: appraisal
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '2.2'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '2.2'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: bundler
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '1.16'
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '1.16'
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: curb
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
|
-
- - "
|
102
|
+
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: 0.9.6
|
105
105
|
type: :development
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
|
-
- - "
|
109
|
+
- - ">="
|
110
110
|
- !ruby/object:Gem::Version
|
111
111
|
version: 0.9.6
|
112
112
|
- !ruby/object:Gem::Dependency
|
113
113
|
name: net-http-persistent
|
114
114
|
requirement: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '3.0'
|
119
119
|
type: :development
|
120
120
|
prerelease: false
|
121
121
|
version_requirements: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
|
-
- - "
|
123
|
+
- - ">="
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '3.0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: rake
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
requirements:
|
130
|
-
- - "
|
130
|
+
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
132
|
version: '10.0'
|
133
133
|
type: :development
|
134
134
|
prerelease: false
|
135
135
|
version_requirements: !ruby/object:Gem::Requirement
|
136
136
|
requirements:
|
137
|
-
- - "
|
137
|
+
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '10.0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
141
|
name: rspec
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- - "
|
144
|
+
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '3.8'
|
147
147
|
type: :development
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
|
-
- - "
|
151
|
+
- - ">="
|
152
152
|
- !ruby/object:Gem::Version
|
153
153
|
version: '3.8'
|
154
154
|
description: GraphQL client on Rails + Convention over Configuration = ❤️
|
@@ -170,15 +170,19 @@ files:
|
|
170
170
|
- README.md
|
171
171
|
- Rakefile
|
172
172
|
- artemis.gemspec
|
173
|
+
- banner.png
|
173
174
|
- bin/console
|
174
175
|
- bin/setup
|
175
176
|
- doc/CHANGELOG.md.erb
|
176
177
|
- doc/changelog_generator.rb
|
177
178
|
- gemfiles/.bundle/config
|
179
|
+
- gemfiles/rails_40.gemfile
|
180
|
+
- gemfiles/rails_41.gemfile
|
178
181
|
- gemfiles/rails_42.gemfile
|
179
182
|
- gemfiles/rails_50.gemfile
|
180
183
|
- gemfiles/rails_51.gemfile
|
181
184
|
- gemfiles/rails_52.gemfile
|
185
|
+
- gemfiles/rails_60.gemfile
|
182
186
|
- gemfiles/rails_edge.gemfile
|
183
187
|
- lib/artemis.rb
|
184
188
|
- lib/artemis/adapters.rb
|
@@ -240,8 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
240
244
|
- !ruby/object:Gem::Version
|
241
245
|
version: '0'
|
242
246
|
requirements: []
|
243
|
-
|
244
|
-
rubygems_version: 2.7.6
|
247
|
+
rubygems_version: 3.0.3
|
245
248
|
signing_key:
|
246
249
|
specification_version: 4
|
247
250
|
summary: GraphQL on Rails
|