Ruby gem のトラブルシューティング

このドキュメントでは、Artifact Registry リポジトリで Ruby gem を使用する際に特定のエラーが発生する理由と、その状況に対する考えられる解決策について説明します。

push 認証情報の有効期限切れ

push リクエストを行ったが、次のエラー メッセージが表示された。

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

認証情報を更新するには、次のコマンドを実行して新しいトークンを生成します。

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

ここで

  • LOCATION は、リポジトリのリージョンまたはマルチリージョンの ロケーションです。
  • PROJECT は、プロジェクト ID です。このフラグを省略すると、 現在のプロジェクトまたは デフォルトのプロジェクトが使用されます。
  • REPOSITORY はリポジトリの ID です。デフォルトの デフォルト Artifact Registry リポジトリを構成した場合、このフラグがコマンドから省略される と、そのデフォルト リポジトリが使用されます。

push 時のログイン プロンプト

push リクエストを行ったが、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:

次のコマンドを実行してみてください。

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

pull 認証情報の有効期限切れ

pull リクエストを行ったが、次のエラー メッセージが表示された。

 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)

認証情報を更新するには、gem sources から有効期限切れの認証情報ソースを削除します。次に、次のコマンドを実行して新しいトークンを生成します。

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

ここで

  • LOCATION は、リポジトリのロケーションです。
  • PROJECT は、プロジェクト ID です。このフラグを省略すると、 現在のプロジェクトまたは デフォルトのプロジェクトが使用されます。
  • REPOSITORY は、 Artifact Registry 内のリポジトリの名前です。

pull リクエスト エラー: Could not fetch specs

pull リクエストを行ったが、次のエラー メッセージが表示された。

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

pull リクエストが成功した場合でも、このエラーが誤って表示されることがあります。bundle install --verbose などの verbose コマンドを使用して、pull リクエスト が成功したことを確認します。