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

На моем компьютере установлены две версии направляющих (2.1.0 и 2.2.2).

Можно ли при создании нового приложения указать, что я хочу использовать более старую (2.1.0) версию?

 Animesh16 июн. 2015 г., 21:11

Ответы на вопрос(6)

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
 Amir El-Bashary07 февр. 2019 г., 14:13
Это работает и для меня
 Rajkaran Mishra30 июл. 2017 г., 17:41
--force перезаписывает Gemfile
 Rajkaran Mishra29 июл. 2017 г., 17:14
Я не думаю, что есть необходимостьbundle update, он тоже обновит рельсы !!
 mikej30 июл. 2017 г., 18:40
@devel спасибо за то, что придерживались этого! Похоже, разница между версиями 4.x и 5.x. Я не заметил этого, так как я в основном использовал этот подход для создания приложений 4.x начиная с выпуска Rails 5. В 5.0.1 сгенерированный Gemfile определяет версию, используя~> оператор:gem 'rails', '~> 5.0.1', Так что вам может понадобиться отредактировать Gemfile послеbundle exec rails new... если вы хотите придерживаться точной версии.
 Rajkaran Mishra30 июл. 2017 г., 18:04
я сделалgem 'rails', '5.0.0.1' >> Gemfile и после запускаbundle exec rails new с опцией --force, егоgem 'rails', '~> 5.0.0', '>= 5.0.0.1' в Gemfile. Теперь, когда я бегуbundle update, обновляет rails до 5.0.4 (в Gemfile.lock), но я ожидал использовать rails версии 5.0.0.1
 mikej30 июл. 2017 г., 17:52
Да, но новый Gemfile, который пишетсяеще указывает версию Rails, которую мы хотели (потому чтоbundle exec rails new... побежал версиюrails указанный в Gemfile, который заканчивается заменой.)
 mikej30 июл. 2017 г., 17:36
@ развитьbundle update необходимо, потому что используется ручное обновление (--skip-bundle). Rails не будет обновлен, потому что в Gemfile указана конкретная версия (в примере 4.2.9).

s в приложении. Это очень помогает при развертывании, особенно в средах с общим хостингом.

Просто изменитеRAILS_GEM_VERSION переменная вconfig/environment.rb и выдайте задание заморозить грабли:

rake rails:freeze:gems
 Apoorv26 апр. 2016 г., 19:58
использовать rvm использовать rubyversion

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
Решение Вопроса

я нашелВот недокументированная опция для создания нового приложения с использованием более старой версии Rails.

rails _2.1.0_ new myapp 
 kunashir05 июл. 2016 г., 13:23
Это также работает для 5.0!
 Peter Brown06 февр. 2011 г., 16:03
Вы должны изменить это на принятый ответ, так как он работает для Rails 2 и 3. Ответ Keltia больше не будет работать, если у вас установлен Rails 3 и вы хотите приложение Rails 2.
 Jason16 июл. 2013 г., 22:45
Очень полезно сейчас, когда вышла 4.0.0!
 xhan22 нояб. 2010 г., 09:24
все еще работает на Rails3.0, потрясающе!
 Mike02 мая 2011 г., 21:41
Ошибочно, что установленный Rails 3 терпит неудачу для2.3.5 - Только что протестирован на Mac OS X Snow Leopard с установленными этими модулями: rails (3.0.5, 2.3.5, 2.2.2, 1.2.6)
 tomb10 мая 2018 г., 12:30
Все еще работает в 5.2.0
 lflores20 июн. 2014 г., 07:13
Это также работает для двигателей:rails _3.2.11_ plugin new myapp
 Ninad25 дек. 2011 г., 12:04
Я получаю ошибку при использовании 3.1.3, когда установлены 3.1.3 и 3.2.0.rc1. Вот ошибка --- [ninad @ localhost devel] $ rails_3.1.3_ new sample_app /home/ninad/.rbenv/versions/1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:314:inbin_path': can't find gem railties (["3.1.3"]) with executable rails (Gem::GemNotFoundException) from /home/ninad/.rbenv/versions/1.9.2-p290/bin/rails:19:in <Главная>»
 Calrion03 сент. 2011 г., 03:02
Это функциональность RubyGems, а не Rails; поэтому он не зависит от версии Rails и будет работать для других гемов. (Спасибо, это отличный ответ!)
 x-yuri27 мар. 2019 г., 16:04
Не работает сruby =>2.3.2<2.4, Ошибка была введена впортировать решение другоговопрос, Появился в2.4 ветка и была исправлена ​​перед любым выпуском. С точки зренияrubygems это было бы> =2.5.2<2.6.2, Обходной путь обновленияrubygems а затем binstubs:gem update --system && gem pristine --all --only-executables.

которую вы хотите в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 _version_ new application_name

напримерrails _2.1.0_ new my_app

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

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

Ваш ответ на вопрос