LoginSignup
0
1

More than 3 years have passed since last update.

graphql-codegenでRails6を使ったgraphqlのendpointからTypeScriptの型定義が自動生成できない

Posted at

Rails5系の場合は問題なくgraphql-codegenを使ってTypeScriptの型定義の自動生成できていたのですが、
Rails6にアップデードしたら、エラーになり自動生成ができなくなったのでその解決方法を記載しておきます。

開発環境はdockerでフロントエンドとバックエンドでそれぞれコンテナが存在しています。

各コンテナへのURLは以下の通り
フロントエンド http://localhost
バックエンド http://localhost:3001

Rails6からHost Authorizationという機能が追加されたのですが、これが原因でした。

バックエンド側のコンテナにはdocker-compose.ymlbackend-apiというホスト名を付与しており、フロントエンド側のコンテナからgraphql-codegenを実行する際はhttp://localhost:3001ではなくてhttp://backend-apiに向けて実行します。

# docker-compose exec frontend bash
bash-5.0# yarn graphql-codegen --config codegen.yml
codegen.yml
overwrite: true
schema: "http://backend-api/graphql"
documents: "graphql/**/*.graphql"
generates:
  graphql/generated/graphql.ts:
...

その際、Rails側にbackend-apiというホスト名のホワイトリストに入れてあげないとリクエストが許可されない。

config/application.rb
config.hosts << 'backend-api'

これでRailsを再起動させて、再度graphql-codegenを実行すれば、無事TypeScriptの型定義が自動生成されるはずです。

簡単な説明ですが、以上となります。

参考URL https://www.fngtps.com/2019/rails6-blocked-host/

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1