開発環境では動くのにデプロイしたら動かないので調べたら graphiql-rails がサブディレクトリを考慮してくれていないためでした。
とりあえず次のように ActionController::Base.relative_url_root
を自力で指定したら動きました。
config/routes.rb
Rails.application.routes.draw do
mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "#{ActionController::Base.relative_url_root}/graphql"
post "/graphql", to: "graphql#execute"
end
通常は ActionController::Base.relative_url_root
は空なので常に上のように書いておいても問題ありません。