Это правильно. bundle install
не будет устанавливать Rails как самоцвет в обычном смысле. Теперь, чтобы объяснить, почему.
Когда Bundler запускает установку, он устанавливает gems в каталог: ~/.bundle/<type-of-ruby>/<version>/gems
. Это отличается от обычного способа их установки по системному пути. Когда гем установлен по системному пути, исполняемый файл становится доступным, потому что этот каталог находится в пути загрузки. Теперь это плохо , потому что вы можете иметь только один исполняемый файл на камень . У вас установлен SomeGem v2, но вы хотите использовать генератор из SomeGem v1? Жаль.
Bundler решает эту проблему, устанавливая их в вышеупомянутом месте и требуя только определенных версий драгоценных камней, которые ему нужны (указанные внутри Gemfile
. Запустив просто rails
, вы пытаетесь запустить system исполняемый файл (как в случае с gem install rails
), а не как Bundler (предоставляется bundle install
для проекта Rails).
Чтобы запустить тот, который устанавливает Bundler, вы должны запустить его как bundle exec rails
в каталоге, который содержит Gemfile
, который указывает любую версию Rails. Bundler загрузит определенную версию Rails, и теперь вы сможете запускать их бок о бок с единственным компромиссом - префиксом bundle exec
к командам.
Лично я связал это с be
и двумя символами до того, как некоторые команды, по моему мнению, являются достойным компромиссом для избежания Седьмого круга ада конфликта самоцветов.