ユーザーごとまたはプロジェクトごとの gem キャッシュ パス

概要

Ruby アプリをパックしようとすると、次のようなエラーがたくさん発生します。

Bundler::PermissionError There was an error while trying to write
to `/opt/ruby/lib/ruby/gems/3.3.0/cache/nio4r-2.7.1.gem`. It is
likely that you need to grant write permissions for that path.

…これは驚くべきことではありませんが、私自身がユーザー アカウントから権限を削除しました。 Ruby 開発者は別のことを考えているのかもしれませんが、正直に言って、全ユーザーが書き込み可能な gem キャッシュ パスのアイデアは面白いと思います。

すべてに独自の gem キャッシュ パスを使用するにはどうすればよいですか? (バンドルパッケージが含まれるため、バンドルインストール –local は使用できません)。注意してください、この質問は別の質問をしています(OPはローカルディレクトリをgemキャッシュとして使用したいのですが、システムのgemディレクトリを別の場所で使用したいのですが、とにかくそこに書かれた答えは私にとっては機能しません、それでもこれらのエラーが発生します)。

私が最も望んでいることは、node.js の世界でプロジェクト ローカルの node_modules ディレクトリが行っていることと似ていることです。したがって、すべての依存関係はローカル プロジェクト ディレクトリにダウンロードされ、依存関係をインストールするために root 権限は必要ありません。

解決策

まったく驚くべきことに、解決策は次のとおりでした。

「ジェム」と「バンドル」の関係はまだ明確ではありません。明らかなこと:

通常のパッケージ マネージャー (Java の mvn や、node.js の npm など) は、Ruby で次の 3 つのツールを使用して実行されます。

Gem と Bundle の間の機能の競合は明らかに Ruby 世界全体の欠点であり、これらはすべて同じであるべきです (または、非常に明確に区別され、十分に文書化された責任があるべきです)。