Especificar la versión de rails a utilizar al crear una nueva aplicación


Tengo dos versiones de rails (2.1.0 y 2.2.2) instaladas en mi ordenador.

Cuando creo una nueva aplicación, ¿es posible especificar que quiero usar la versión anterior (2.1.0)?

Author: John Topley, 2008-12-18

5 answers

He encontrado aquí una opción indocumentada para crear una nueva aplicación usando una versión anterior de Rails.

rails _2.1.0_ new myapp 
 438
Author: hectorsq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-20 16:23:57

Aquí está el comando que uso normalmente:

rails _version_ new application_name

Por ejemplo rails _2.1.0_ new my_app

Aquí está la lista de todas las versiones de rails disponibles hasta ahora:

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

 56
Author: Hardik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-17 07:24:28

Estaba teniendo algunos problemas usando rails _version_ new application_name (el proyecto resultante todavía se generó para la última versión de Rails instalada.)

Después de un poco de excavación he encontrado un artículo por Michael Trojanek con un enfoque alternativo. Esto funciona creando una carpeta con un Gemfile especificando la versión deseada de Rails y luego usando bundle exec rails... para que Bundler se encargue de ejecutar la versión apropiada de rails. por ejemplo, para hacer un nuevo Rails 4.2.9 proyecta los pasos son:

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
 18
Author: mikej,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-30 15:32:03

Puede generar el esqueleto con cualquiera de las versiones y requerir la que desee en 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

O utilice el comando "rails" de la versión que desee de todos modos.

 3
Author: Keltia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-18 20:43:21

También deberías echar un vistazo a "congelar" tus gemas Rails en la aplicación. Esto ayuda mucho con la implementación, especialmente en entornos de alojamiento compartido.

Simplemente cambie la variable RAILS_GEM_VERSION en config/environment.rb y ejecute la tarea freeze rake:

rake rails:freeze:gems
 3
Author: Thiago Arrais,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-18 22:06:44