Указание версии рельсов для использования при создании нового приложения
На моем компьютере установлены две версии направляющих (2.1.0 и 2.2.2).
Можно ли при создании нового приложения указать, что я хочу использовать более старую (2.1.0) версию?
8 ответов
Я нашел здесь недокументированный вариант создания нового приложения с использованием более старой версии Rails.
rails _2.1.0_ new myapp
Вот команда, которую я обычно использую:
rails _version_ new application_name
например rails _2.1.0_ new my_app
Вот список всех доступных версий рельсов на данный момент:
У меня были некоторые проблемы с использованием rails _version_ new application_name
(Полученный проект все еще был сгенерирован для последней установленной версии Rails.)
Немного покопавшись, я нашел статью Михаила Троянека с альтернативным подходом. Это работает путем создания папки с Gemfile с указанием желаемой версии Rails и последующего использования bundle exec rails...
так что Bundler позаботится о запуске соответствующей версии rails
, Например, чтобы создать новый проект Rails 4.2.9, необходимо выполнить следующие шаги:
mkdir myapp
cd myapp
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '4.2.9'" >> Gemfile
bundle install
bundle exec rails new . --force --skip-bundle
bundle update
Как справедливо указано @mikej для Rails 5.0.0 или выше, вы должны выполнить следующие шаги:
Создайте каталог для своего приложения вместе с Gemfile, чтобы указать желаемую версию Rails, и позволить bundler установить зависимые гемы:
$ mkdir myapp
$ cd myapp
$ echo "source 'https://rubygems.org'" > Gemfile
$ echo "gem 'rails', '5.0.0.1'" >> Gemfile
$ bundle install
Убедитесь, что установлена правильная версия направляющих: $ bundle exec rails -v
Теперь создайте ваше приложение, позвольте Rails создать новый Gemfile (или, скорее, перезаписать существующий, используя --force
флаг) и вместо установки комплекта (--skip-bundle
) обновить его вручную:
$ bundle exec rails new . --force --skip-bundle
Если вы проверите вход для рельсов в Gemfile
должно быть так:
gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
Вы должны обновить его до точной версии, необходимой для приложения:
gem 'rails', '5.0.0.1'
Теперь последний шаг:
$ bundle update
Этого можно добиться двумя способами:
один, как предлагается в принятом ответе:
gem install rails -v 2.1.0 #only when the gem has not been installed in the desired ruby version you are using, so that you don't get error on next step
rails _2.1.0_ new my_app
и альтернативный метод - создать gemfile с желаемой версией рельсов перед инициализацией проекта рельсов
mkdir my_app
cd my_app
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '2.1.0'" >> Gemfile
bundle install
bundle exec rails new . --force --skip-bundle
Подробно об этом я писал в своей статье
Вы можете создать скелет с любой версией и потребовать ту, которую вы хотите в config/environment.rb
:
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.1.2' unless defined? RAILS_GEM_VERSION
или используйте команду "rails" из той версии, которую вы хотите.
Вы также должны взглянуть на "зависание" ваших драгоценных камней Rails в приложении. Это очень помогает при развертывании, особенно в средах с общим хостингом.
Просто измените RAILS_GEM_VERSION
переменная в config/environment.rb
и выдайте задание заморозить грабли:
rake rails:freeze:gems
Пожалуйста, следите за тем, какую версию ruby вы используете с Rails.
Команда создания нового проекта для конкретной версии Rail может вам не подойти. У меня были некоторые проблемы по этому поводу. И проблема была в рубиновой версии, которая у меня по умолчанию 3.0.0. Эта версия не работала с Rails 5. Затем я установил ruby 2.7.5 и переключился на него по умолчанию. Только тогда я смог делать проекты и для Rails 5, и для 7.
Если вы хотите ту же среду с рубином 2.7.5
rvm install ruby-2.7.5
переключиться на эту версию по умолчанию
rvm --default use 2.7.5
установить бандлер и вебпакер
gem install bundler
gem install webpacker
установить последние рельсы (которых 7)
gem install rails
Проверь это
rails new test_app_6
cd test_app_6
rails s
проверьте локальный хост 3000
затем остановите сервер (control + c) и установите Rails 5
gem install rails -v 5.2.6
Проверь это
rails _5.2.6_ new test_app_5
cd test_app_5
rails s
проверьте локальный хост 3000
http://localhost:3000
Готово!