Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug] Network errors are discarded.

Abierto
#67 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
ruby
Área
api

Línea de trabajo

Comienza con lib/graphql/client/http.rb alrededor del retorno de estilo Either y con lib/graphql/schema/loader.rb, donde load_schema consume dump_schema. Sigue la ruta de error a través de load_schema y de los otros llamadores de execute mencionados, incluido query(), y verifica después que los errores HTTP o GraphQL sigan estando disponibles en lugar de convertirse en un KeyError.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

If there's an HTTP error, calls to GraphQL::Client can return this:

KeyError: key not found: "data" (KeyError)

E.g., when I try the example in the readme to https://example.com/graphql, I expect some kind of network or HTTP error. Instead, I get the above KeyError.

I got this when making changes to my infrastructure. It made it very hard to debug problems.


I looked at load_schema, and found:

pry(main)> GraphQL::Client.load_schema(HTTP)
KeyError: key not found: "data" (KeyError)
from gems/3.4.0/gems/graphql-2.5.2/lib/graphql/schema/loader.rb:17:in 'Hash#fetch'

The load_schema call turns into load_schema(dump_schema(HTTP)). dump_schema seems to return full error info. So, between those two function calls, the information is lost:

[pry(main)> GraphQL::Client.dump_schema(HTTP)
=> {"errors" => [{"message" => "403 Forbidden"}]}

This happens other places that call execute, I believe, like .query().


In my opinion, the core problem is, the library uses fp-style Either error returns. However, Ruby doesn't have a way (like Rust or Haskell do) to enforce the handling of the error case. And so, it's possible to simply not handle them appropriately, like here.

Either-style API:

https://github.com/github-community-projects/graphql-client/blob/aff58829ea27c7e59213756aab0bdfdb0e03941a/lib/graphql/client/http.rb#L62-L63

IMO, the fix is to use Ruby's Exception/Error facility so that library clients can meaningfully handle errors.

Lenguaje dominante
Ruby
Estrellas
78
Forks
228
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de github-community-projects/graphql-client

Todos los issues de github-community-projects/graphql-client

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.