Resolução de problemas para gems Ruby

Este documento explica por que motivo podem ocorrer determinados erros quando trabalha com gems Ruby num repositório do Artifact Registry e possíveis soluções para essas situações.

Credenciais push expiradas

Enviou um pedido 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 as 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

Onde:

  • LOCATION é a localização regional ou multirregional do repositório.
  • PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
  • REPOSITORY é o ID do repositório. Se configurou um repositório do Artifact Registry predefinido, esse repositório predefinido é usado quando esta flag é omitida do comando.

Pedido de início de sessão ao enviar

Fez um pedido push, mas recebeu uma mensagem a pedir as 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:

Experimente executar o seguinte:

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

Credenciais de obtenção expiradas

Criou um pedido de obtenção, 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 as suas credenciais, remova a origem de credenciais expirada de gem sources. Em seguida, execute o seguinte comando para gerar um novo token:

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

Onde:

  • LOCATION é a localização do seu repositório.
  • PROJECT é o ID do projeto. Se esta flag for omitida, é usado o projeto predefinido atual.
  • REPOSITORY é o nome do seu repositório no Artifact Registry.

Erro no pedido de envio: Could not fetch specs

Criou um pedido de obtenção, 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)>

Este erro pode aparecer incorretamente, mesmo que o pedido de obtenção tenha sido bem-sucedido. Use um comando verbose para verificar se o pedido de obtenção foi bem-sucedido, como bundle install --verbose.