Memecahkan masalah gem Ruby

Dokumen ini menjelaskan alasan terjadinya error tertentu saat bekerja dengan gem Ruby di repositori Artifact Registry, dan kemungkinan solusi untuk situasi tersebut.

Kredensial push yang sudah tidak berlaku

Anda membuat permintaan push, tetapi menerima pesan error berikut:

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

Untuk memperbarui kredensial, buat token baru dengan menjalankan perintah berikut:

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

Dengan:

  • LOCATION adalah lokasi regional atau multi-regional untuk repositori.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.
  • REPOSITORY adalah ID repositori. Jika Anda mengonfigurasi repositori Artifact Registry default, repositori default tersebut akan digunakan jika tanda ini tidak disertakan dalam perintah.

Perintah login saat melakukan push

Anda membuat permintaan push, tetapi menerima pesan yang meminta kredensial ruby.pkg.dev Anda:

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:

Coba jalankan perintah berikut:

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

Kredensial penarikan yang sudah tidak berlaku

Anda membuat permintaan pull, tetapi menerima pesan error berikut:

 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)

Untuk memperbarui kredensial Anda, hapus sumber kredensial yang sudah tidak berlaku dari gem sources. Selanjutnya, buat token baru dengan menjalankan perintah berikut:

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

Dengan:

  • LOCATION adalah lokasi repositori Anda.
  • PROJECT adalah project ID. Jika flag ini tidak ada, maka project default saat ini atau akan digunakan.
  • REPOSITORY adalah nama repositori Anda di Artifact Registry.

Error permintaan pull: Could not fetch specs

Anda membuat permintaan pull, tetapi menerima pesan error berikut:

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

Error ini mungkin muncul secara keliru meskipun pull request berhasil. Gunakan perintah verbose untuk memverifikasi bahwa permintaan penarikan Anda berhasil, seperti bundle install --verbose.