Nueva versión de la gema para TheGamesDB
Publicado el 20 de enero de 2023Esta semana actualicé mi gema Ruby gamesdb a la versión 2.1.0. Incluye cambios de mantenimiento, como asegurar compatibilidad con las versiones nuevas de Ruby (3.2) y actualizaciones en los tests. Refactoricé un poco el código extrayendo varias funciones utilitarias de manejo de imágenes y más a su propio módulo Gamesdb::Utils
.
Manejo de errores
La nueva funcionalidad más importante es el manejo de errores. Anteriormente, en caso de error de conexión o en el pedido HTTP, el código levantaba la excepción directamente de Net::HTTP
o cualquier otro error en la función principal perform_request
. Pero si había un error desde la API (401, 403, etc.), el código no lo trataba como error e intentaba procesar la respuesta como si el pedido hubiese sido correcto. Ahora me fijo el código devuelto por la respuesta HTTP y levanto una excepción del tipo Gamesdb::Error
, para que sea más fácil corregir errores y capturar excepciones de manera más granular.
$ rake console 3.1.2 :001 > client = Gamesdb::Client.new('test') => #<Gamesdb::Client:0x00007f99e36991d0 @api_key="test"> 3.1.2 :002 > client.platforms /home/fernando/workspace/picandocodigo/gamesdb/lib/thegamesdb.rb:66:in `http_error': Gamesdb: 503 - Service Unavailable (Gamesdb::Error) from /home/fernando/workspace/picandocodigo/gamesdb/lib/thegamesdb.rb:47:in `perform_request' |
Escribiendo esta entrada empecé a probar cosas y terminé actualizando un poco el código porque el sitio web de TheGamesDB está devolviendo un error 503 🫤
Así que ahora también capturo errores del estilo, se puede ver en el código de ejemplo que agregué a esta entrada, y también en los tests que están fallando en GitHub Actions con un error 503.
Cuando vuelva a estar en línea el sitio web de TheGamesDB, ejecuto el rake release
de la versión 2.1.1 con las últimas actualizaciones en el manejo de errores.
Actualización: El sitio de TheGamesDB está de vuelta. Pude correr los tests y que todo pasara, así que ya está disponible la versión 2.1.1.
No sé qué tanto uso tiene la gema, pero con sólo 3 días de publicada ya lleva más de 100 descargas. Hay que tener en cuenta que varias descargas de Rubygems van a ser de bots, pero con suerte alguien más la está encontrando útil. Todavía no he publicado el proyecto original para el cual desarrollé la gema. Estaba hosteado en el servicio gratuito de Heroku, así que ya ni siquiera está online. Pero con suerte algún día me voy a poner a terminar ese proyecto Rails y hacerlo público. Mientras tanto, seguiré manteniendo también la gema gamesdb.
No hay comentarios en este post
Feed de comentariosDejar un comentario
<pre lang="L"> código </pre>
Siendo L un lenguaje compatible GeSHI. Más info.