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 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 do repositório.
  • PROJECT é o ID do projeto. Se essa flag for omitida, o projeto padrão ou atual 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 enviar

Você fez uma solicitação de envio, mas recebeu uma mensagem pedindo suas credenciais do 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 extração 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 fonte 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, o projeto padrão ou atual será usado.
  • REPOSITORY é o nome do seu repositório no Artifact Registry.

Erro de pull request: 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.