なぜ「rails new」でプロジェクトが作成され、そのプロジェクトには bin/rails も実行可能になるのでしょうか?
概要
Rails の世界への第一歩を踏み出します。私はコンテナ内で開発を行っており、そこで Ruby インタープリタが動作しています。
公式ドキュメントには、Rails を gem インストールしてから新しいプロジェクトを作成する必要があると記載されています。新しいプロジェクトには bin/rails もあり、私の「グローバル」rails 実行可能ファイルとまったく同じバージョンです。これは混乱を招きます。
レールは新しいプロジェクトの足場を築くためにのみ必要だと思いますね?その場合、「グローバル」 Rails gem を必要としない方法で Rails をインストールできますか?スケルトンの Github リポジトリのようなものですか?
解決策
Rails を実行すると、現在インストールされている最新バージョンが実行されます。複数の gem バージョンを同時にインストールできます。たとえば、これは私が現在 Rails に使用しているものです (Ruby バージョンの 1 つ)。
$ gem list | ag "^rails\s"
rails (7.1.0, 7.0.4.3, 7.0.4.2, 7.0.4.1, 6.1.7.6, 6.1.7.3, 6.1.7, 6.1.6, 6.1.5, 6.1.4.6, 6.1.4.1, 6.1.4, 6.1.0.rc1, 6.0.6.1, 6.0.3.4, 6.0.0, 5.2.8.1, 5.0.7.2, 4.2.11.3)
レールを実行すると最新バージョンが得られます。
$ rails -v
Rails 7.1.0
数年前のプロジェクトがある場合は、Rails v5.2.8.1 を使用する必要があります。 bin/rails は、そのプロジェクトに正しいバージョンの Rails を使用していることを確認します。
$ cd ~/code/SO/rails_five
$ bin/rails -v
Rails 5.2.8.1
# depending on your shell config (rbenv), this does automagically work (although, super slow for some reason)
$ rails -v
Rails 5.2.8.1
bin/rails - Bundle exec Rails と同等であり、数年後の自分も含め、プロジェクトを使用する全員が正しいバージョンの Rails を使用していることを確認するためにあります。グローバル バージョンは常に変更されます。
Rails のバージョンが 100 万ある場合は、新しいプロジェクトに使用するバージョンを指定するための特別な構文があります。
$ rails _5.2.8.1_ new rails_five
php については門外漢なので、プロジェクトを開始する前に「composer.json」に何が入っているかを知っておく必要がありますか?いくつかの gem を含むディレクトリと Gemfile を作成し、bundle install を実行できます。さて、どうするでしょうか? Rails プロジェクトには、rails new によって生成されるかなりの構造があります。これらすべてを手動で行う必要はありません。また、バンドル インストールでは gem がインストールされる (別名ダウンロードされる) だけであり、それが理にかなっている場合は、プロジェクト構造は生成されません。
レールの場合は次のようにします。
gem install rails
rails new my_project
cd my_project
# use bin/rails from now on for years to come
https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://bundler.io/v2.4/man/bundle-binstubs.1.html