4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gaphql-rubyで不親切なエラーメッセージに立ち向かう

Last updated at Posted at 2019-03-28

rails (5.2.2.1)
graphql (1.9.3)

見慣れぬエラーメッセージ

rmosolgo/graphql-rubyを使っていると、まれに以下のようなエラーメッセージに遭遇することがあります。


LoadError - Unable to autoload constant Types::MutationType, expected .../app/graphql/types/mutation_type.rb to define it:

こちらのエラー、特にMutationを使用していないプロジェクトでも発生することがあり、かつ内容やトレースからは原因が追いづらいものになってます。どうして怒られたのでしょうか。

対処

そこで真の原因究明のため、いったん以下の変更を加えてみます。

# config/application.rb
config.paths.add 'app/graphql/types', eager_load: true`

あまりスマートな方法ではありませんが、「 Types::MutationType が無い」と怒られたので明示的にautoloadさせてみた感じですね。
これで一旦冒頭のような奇妙なメッセージは消え去り、下記の通りより本当のエラーに近い内容がトレースされるようになりました。

/myapp/app/graphql/queries/select_query.rb:26: syntax error, unexpected ':', expecting '}' result: row, ^ 

ご覧の通りで、今回の場合原因は単なるrubyのシンタックスエラーだったことが分かったのですが、最初の表示はトレースを追っても全然到達できず、これには中々ハマりました。

本家issueの状況

Trying to use a union, getting "Unable to autoload constant Types::MutationType" #1245

本家にも似たようなissueがありますが、2019/3/28現在はfixのないままcloseされてる状態のようです。
それにしてもこの挙動には何人も苦しんでるようで、スキを見てPR投げてみようかなという気持ちになりますね ^^;

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?