GraphQL

新規プロジェクトでGraphQL-Rubyを利用する際に気をつけること

GraphQL-RubyでAPI開発する際に、以下のように--apiオプションをつけたくなる。 rails new iikannzino_service --api そうすると、rails generate graphql:installとした時にgraphiql-railsがinstallされなくなってしまう。 rails g graphql:install --no-ap…

GraphQLで独自Scalar型を定義する時に気をつけること

GraphQL-Rubyでは、Int、Float、String、Boolean,IDといったビルドイン以外にISO8601DateTimeやISO8601Date型が提供されています。 また、独自Scalar型を定義することができ、その方法はドキュメントに記載されています。 class Types::Url < Types::BaseSca…

GraphQL-RubyでUnion型を実装する方法

GraphQLにおけるUnion型は、Object型のリストを表現します。 実装方法は、ドキュメントを参考にすると以下の通りです。 簡易的にUnionを試すためUserクラスにcommentsメソッドを実装していますが、本来はSTIやCTIなどの実装を表現する場合に利用します。それ…

GraphQL-RubyのEnum classes are never instantiated and their methods are never called.とは何か

GraphQL-RubyのEnumを翻訳するにあたり、Enum classes are never instantiated and their methods are never called.に疑問を持ったのでソースコードを読むことにしました。 version graphq-ruby: 1.9.5 ruby: 2.6.5 実装は、GraphQL::Schema::Enumにありま…

GraphQL-RubyのInstrumentationを翻訳して学んだこと

GraphQL-Rubyには、Queryの実行前後で処理を差し込むことが可能なInstrumentが実装されています。 この機能を利用するためには、必ず#before_query(query)と#after_query(query)二つのメソッドを定義する必要があります。 以下のように自身のスキーマクラス…

「初めてのGraphQL」の原書を読んだ

2018年に出版された「初めてのGraphQL」の原書である「Learning GraphQL」を読みました。 なぜ、読んだのか 新卒研修で一度読了したのですが、社内のエンジニアから日本語訳が出版される前に読書会を開かないかと誘われました。プロダクトコードで、もっとク…

GraphQL-Ruby1.9+から子fieldが選択されたかによって処理を変更できるようになった

プロダクトでGraphQL-Rubyのgemを最新バージョンにアップデートしました! 1.9ではfieldにextras:[:lookahead]を追加できます。 この機能は、子field要素がリクエスト対象であるかで条件分岐を可能にします。 ドキュメントを見るだけでは挙動がわかりにくい…

「マッチングプラットフォームを支えるフロントエンドからバックエンドまでのモダン開発について 」に参加した

海外におけるgraphql-rubyのチュートリアルや活用事例の紹介は,GitHub,Shopifyが利用していることもあり,徐々に増えつつある. また,先日はカンファレンスが開催されるなどオフラインでコミュニティも活発である. しかし,日本においては,まだまだ情報…

GraphQLのNewRelicTracingがテスト時のみエラーになる。

TL;DR テストでのみ、NameError: uninitialized constant GraphQL::Tracing::NewRelicTracing::NewRelicとエラーが出た。 原因は、gem 'newrelic_rpm'をテスト環境で導入していなかった。 テスト環境で導入するか、Rails.env.test? でテスト時はuse(GraphQL:…