Solución de problemas de gemas de Ruby

En este documento se explica por qué pueden producirse determinados errores al trabajar con gemas de Ruby en un repositorio de Artifact Registry y se indican posibles soluciones para esas situaciones.

Credenciales push caducadas

Has enviado una solicitud push, pero has recibido el siguiente mensaje de error:

Pushing gem to https://LOCATION-ruby.pkg.devPROJECT/REPOSITORY..
The request does not have valid authentication credentials.

Para actualizar tus credenciales, genera un nuevo token ejecutando el siguiente comando:

export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
bundle config $HOST $GEM_HOST_API_KEY

Donde:

  • LOCATION es la ubicación regional o multirregional del repositorio.
  • PROJECT es el ID del proyecto. Si se omite esta marca, se usará el proyecto predeterminado o el actual.
  • REPOSITORY es el ID del repositorio. Si has configurado un repositorio predeterminado de Artifact Registry, se usará ese repositorio predeterminado cuando se omita esta marca en el comando.

Petición de inicio de sesión al enviar

Has enviado una solicitud push, pero has recibido un mensaje en el que se te piden tus credenciales de ruby.pkg.dev:

Enter your https://us-ruby.pkg.dev/REPOSITORY/GEM_NAME credentials.
Don't have an account yet? Create one at https://us-ruby.pkg.dev/REPOSITORY/GEM_NAME/sign_up
   Email:

Prueba a ejecutar lo siguiente:

GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"

Credenciales de extracción caducadas

Has enviado una solicitud de extracción, pero has recibido el siguiente mensaje de error:

 Unable to download data from https://oauth2accesstoken:REDACTED@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/ - bad response Unauthorized 401 (https://oauth2accesstoken:REDACTED@LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/latest_specs.4.8.gz)

Para actualizar tus credenciales, elimina la fuente de credenciales caducada de gem sources. A continuación, genera un token nuevo ejecutando el siguiente comando:

export GEM_HOST_API_KEY="Bearer $(gcloud auth print-access-token)"
export HOST="https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY"
bundle config $HOST $GEM_HOST_API_KEY

Donde:

  • LOCATION es la ubicación de tu repositorio.
  • PROJECT es el ID del proyecto. Si se omite esta marca, se usará el proyecto predeterminado o el actual.
  • REPOSITORY es el nombre de tu repositorio en Artifact Registry.

Error de solicitud de extracción: Could not fetch specs

Has enviado una solicitud de extracción, pero has recibido el siguiente mensaje de error:

Retrying fetcher due to error (2/4): Bundler::HTTPError Could not fetch specs from https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/ due to underlying error <bad response Not Found 404 (https://LOCATION-ruby.pkg.dev/PROJECT/REPOSITORY/specs.4.8.gz)>

Este error puede aparecer incorrectamente aunque la solicitud de extracción se haya completado correctamente. Usa un comando verbose para verificar que tu solicitud de extracción se ha completado correctamente, como bundle install --verbose.