Tengo dos versiones de rieles (2.1.0 y 2.2.2) instaladas en mi computadora.
Cuando creo una nueva aplicación, ¿es posible especificar que quiero usar la versión anterior (2.1.0)?
ruby-on-rails
hectorsq
fuente
fuente
Respuestas:
Encontré aquí una opción no documentada para crear una nueva aplicación utilizando una versión anterior de Rails.
fuente
_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
<principal> 'Aquí está el comando que uso normalmente:
por ejemplo
rails _2.1.0_ new my_app
Aquí está la lista de todas las versiones de rieles disponibles hasta ahora:
http://rubygems.org/gems/rails/versions
fuente
Estaba teniendo problemas para usar
rails _version_ new application_name
(el proyecto resultante todavía se generó para la versión más nueva de Rails instalada).Después de un poco de excavación, encontré un artículo de Michael Trojanek con un enfoque alternativo. Esto funciona creando una carpeta con un Gemfile que especifica la versión deseada de Rails y luego usándola
bundle exec rails...
para que Bundler se encargue de ejecutar la versión adecuada derails
. Por ejemplo, para hacer un nuevo proyecto Rails 4.2.9, los pasos son:fuente
bundle update
, también actualizará los rieles!bundle update
se necesita porque se está utilizando una actualización manual (--skip-bundle
). Los rieles no se actualizarán porque se especifica una versión específica en el Gemfile (4.2.9 en el ejemplo)--force
está sobrescribiendo el Gemfilebundle exec rails new...
ejecutó la versiónrails
especificada en el Gemfile que termina siendo reemplazada)gem 'rails', '5.0.0.1' >> Gemfile
y después de ejecutarbundle exec rails new
con la opción --force, estágem 'rails', '~> 5.0.0', '>= 5.0.0.1'
en Gemfile. Ahora cuando ejecutobundle update
, está actualizando los rieles a 5.0.4 (en Gemfile.lock), pero esperaba usar los rieles versión 5.0.0.1Como señaló correctamente @mikej para Rails 5.0.0 o superior , debe seguir estos pasos:
Cree un directorio para su aplicación junto con un Gemfile para especificar la versión de Rails que desee y permita que el paquete instale las gemas dependientes:
Verifique que se haya instalado la versión correcta de los rieles:
$ bundle exec rails -v
Ahora cree su aplicación, deje que Rails cree un nuevo Gemfile (o más bien sobrescriba el existente usando la
--force
bandera) y en lugar de instalar el paquete (--skip-bundle
) actualícelo manualmente:Si marca la entrada para rieles
Gemfile
, debería ser así:Debe actualizarlo a la versión exacta necesaria para la aplicación:
Ahora, el paso final:
fuente
Puede generar el esqueleto con cualquier versión y requerir la que desee en
config/environment.rb
:o use el comando "rails" de la versión que desee de todos modos.
fuente
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
RAILS_GEM_VERSION
variableconfig/environment.rb
y emita la tarea de congelar rastrillo:fuente
Hay dos formas de lograr esto:
uno como se sugiere en la respuesta aceptada:
y un método alternativo es crear un archivo de gemas con la versión de rieles deseada antes de inicializar el proyecto de rieles
He escrito sobre esto en detalle en mi artículo
fuente