Указание версии рельсов для использования при создании нового приложения

На моем компьютере установлены две версии направляющих (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

Вот список всех доступных версий рельсов на данный момент:

http://rubygems.org/gems/rails/versions

У меня были некоторые проблемы с использованием 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

Готово!

Другие вопросы по тегам