Heroku にデプロイすると GraphQL が機能しないが、ローカルでは正しく機能する (Shopify Ruby gem)

概要

Shopify gem (バージョン 9.0.2) で Ruby アプリを使用しています

最近まですべてがうまく機能していましたが、突然 Heroku での GraphQL 呼び出しを解析できなくなりました。

しかし、同じプロセスをローカルで実行すると、うまくいきます

たとえば、両方で次のようになります。 - 認証情報、api_version を使用して ShopifyAPI を初期化しています

query_variables = {'gid' => gid}
    query_str = <<-'GRAPHQL'
      query($gid: ID!) {
        product(id: $gid) {
          id
        }
      }
    GRAPHQL

-その後、クライアントを初期化します。

client = ShopifyAPI::GraphQL.client

ローカルでは正常に動作しますが、Heraku では次のエラーが発生します

ローカルでは正常に動作しますが、Heraku では次のエラーが発生します

数か月前には Heroku でもうまく動作しました

GraphQL自体から来ているようですが、なぜこのエラーが表示されたのかわかりません Heroku 上で正しく初期化されていないかのように

私のショップにリンクされていないようです。変更を加えずに他のものを試しましたが、まだ機能しません。

エラーがどこから来たのか何か考えはありますか?

エラーがどこから来たのか何か考えはありますか?

編集: REST API には問題ありません

Edit2:Railsコンソールのバックトレース(heroku run Rails cを使用):

app/vendor/bundle/ruby/2.6.0/gems/graphql-client-0.19.0/lib/graphql/client/document_types.rb:62:in `rescue in analyze_types'
/app/vendor/bundle/ruby/2.6.0/gems/graphql-client-0.19.0/lib/graphql/client/document_types.rb:45:in `analyze_types'
/app/vendor/bundle/ruby/2.6.0/gems/graphql-client-0.19.0/lib/graphql/client.rb:189:in `parse'
/app/lib/utilities/graphql.rb:29:in `query_shopify'
/app/lib/utilities/graphql.rb:368:in `get_product_by_id'
(irb):4:in `irb_binding'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/workspace.rb:85:in `eval'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/workspace.rb:85:in `evaluate'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/context.rb:385:in `evaluate'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:493:in `block (2 levels) in eval_input'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:647:in `signal_status'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:490:in `block in eval_input'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:246:in `block (2 levels) in each_top_level_statement'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:232:in `loop'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:232:in `block in each_top_level_statement'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:231:in `catch'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb/ruby-lex.rb:231:in `each_top_level_statement'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:489:in `eval_input'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:428:in `block in run'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:427:in `catch'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:427:in `run'
/app/vendor/ruby-2.6.6/lib/ruby/2.6.0/irb.rb:383:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands/console/console_command.rb:64:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands/console/console_command.rb:19:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands/console/console_command.rb:96:in `perform'
/app/vendor/bundle/ruby/2.6.0/gems/thor-1.3.1/lib/thor/command.rb:28:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/thor-1.3.1/lib/thor/invocation.rb:127:in `invoke_command'
/app/vendor/bundle/ruby/2.6.0/gems/thor-1.3.1/lib/thor.rb:527:in `dispatch'
/app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/command/base.rb:69:in `perform'
/app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/command.rb:46:in `invoke'
/app/vendor/bundle/ruby/2.6.0/gems/railties-5.2.8.1/lib/rails/commands.rb:18:in `<top (required)>'
/app/bin/rails:4:in `require'
/app/bin/rails:4:in `<main>'

解決策

エラーはgraphql-client gemの更新が原因でした

この宝石は今年更新されました。以前のバージョンは 2022 年のものでした

私が使用している shopify gem バージョン (9.0.2) は、graphql-client の最後のバージョンを使用しており、このバージョンの shopify gem と互換性がありません

Gemfile に以前のバージョンを強制的に入れたところ、再び動作するようになりました

エンジニアmnkyの協力に感謝します