確認環境
$ bundle exec ruby --version
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin19]
$ bundle exec rails --version
Rails 6.0.4.6
$ bundle info graphql
* graphql (2.0.13)
Summary: A GraphQL language and runtime for Ruby
Homepage: https://github.com/rmosolgo/graphql-ruby
Path: /Users/xxxxx/.rbenv/versions/2.7.5/lib/ruby/gems/2.7.0/gems/graphql-2.0.13
データ準備
テーブル定義確認
$ rails db
sqlite> .schema posts
CREATE TABLE IF NOT EXISTS "posts" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "description" text, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "status" integer);
検証コードを実装
app/graphql/types/query_type.rb
module Types
class QueryType < Types::BaseObject
field :error_samples, Types::ErrorSampleType, null: false
def error_samples
# new するだけでエラーが発生する
GraphQL::ExecutionError.new('abcde error')
# raise GraphQL::ExecutionError.new('abcde error')
end
end
end
app/graphql/types/error_sample_type.rb
# frozen_string_literal: true
module Types
class ErrorSampleType < Types::BaseObject
field :title, String, null: true
end
end
graphiql でクエリを発行する
query {
errorSamples {
title
}
}
取得結果
{
"data": null,
"errors": [
{
"message": "abcde error",
"locations": [
{
"line": 68,
"column": 3
}
],
"path": [
"errorSamples"
]
}
]
}