Solução de problemas para gems do Ruby

Este documento explica por que determinados erros podem ocorrer ao trabalhar com gems do Ruby em um repositório do Artifact Registry e possíveis soluções para essas situações.

Credenciais de push expiradas

Você fez uma solicitação de push, mas recebeu a seguinte mensagem de erro:

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

Para atualizar suas credenciais, gere um novo token executando o seguinte 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

Em que:

  • LOCATION é o local regional ou multirregional location do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, então o projeto atual ou projeto padrão será usado.
  • REPOSITORY é o ID do repositório. Se você tiver configurado um repositório padrão do Artifact Registry, ele será usado quando essa flag for omitida no comando.

Solicitação de login ao fazer push

Você fez uma solicitação de push, mas recebeu uma mensagem solicitando suas credenciais 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:

Tente executar o seguinte:

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

Credenciais de pull expiradas

Você fez uma solicitação de envio, mas recebeu a seguinte mensagem de erro:

 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 atualizar suas credenciais, remova a origem de credenciais expirada de gem sources. Em seguida, gere um novo token executando o seguinte 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

Em que:

  • LOCATION é o local do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, então o projeto atual ou projeto padrão será usado.
  • REPOSITORY é o nome do repositório no Artifact Registry.

Erro de solicitação de pull: Could not fetch specs

Você fez uma solicitação de envio, mas recebeu a seguinte mensagem de erro:

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)>

Esse erro pode aparecer incorretamente, mesmo que a solicitação de envio tenha sido bem-sucedida. Use um comando verbose para verificar se a solicitação de envio foi bem-sucedida, como bundle install --verbose.