artemis 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+

|
|
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
|