Cómo actualizar de Rails 4.2.6 a Rails 5.0

¿Hay alguna forma de consola en la que pueda actualizar mis Rails a la nueva versión 5.0?

¿O tengo que ir manualmente a reemplazar cada archivo que se necesita para actualizar? El Interne parece vago en darme una solución a este problema.

Acabo de pasar por esto hace unos días, y este fue mi proceso (exitoso):

Primero, asegúrese de que su aplicación se ejecute en Ruby 2.2+ antes de actualizar.

Luego actualice Rails a la última versión 4.x (4.2.7 en este momento), y ejecute su conjunto de pruebas (o ejecute completamente su aplicación) observando el registro de advertencias de desaprobación.

Arregla esas desaprobaciones si encuentras alguna.

Lea atentamente las notas de la versión 5.0 y tome nota de las cosas que podrían afectar su aplicación.

Revise su Gemfile con Ready4Rails , que le ayudará a saber qué gems tiene que aún no estén listas para Rails 5.

Es probable que necesites visitar los repositorys de inicio de algunas de tus gems para ver si hay una twig que pueda tener soporte, pero que aún no se haya lanzado. Es posible que desee fijar su Gemfile para estas gems en una versión preliminar o en una horquilla (incluso si no lo adopta de inmediato, esto puede ayudarlo a funcionar cuando se lance la versión final de esas gems).

También puede ayudar a reducir sus dependencias en general. Por ejemplo, es posible que tengas un montón de gems en tu bloque de development , que aún no están actualizadas. Probablemente puedas vivir sin estos por un tiempo.

Algunas personas le recomendarán que elimine los números de versión en su Gemfile y la bundle update . Yo recomendaría en contra de eso. Cambiar demasiadas cosas a la vez puede hacer que sea muy difícil rastrear los problemas.

Cambie la versión de Rails que figura en su Gemfile siguiente manera:

 gem 'rails', '= 5.0.0' 

y ejecutar bundle update rails .

Esto probablemente fallará y le dará una lista de comparaciones de números de versión que el proveedor no pudo resolver. Busque cualquier dependencia que en última instancia requiera que los Rails sean menos de 5, y vea si se pueden actualizar.

Cambie su versión de esa gem, deshaga el cambio a la versión para Rails. bundle update la gem, ejecute nuevamente su suite (o ejerza partes de su aplicación que usen las características de esa gem) y busque desaprobaciones.

Realice su pequeño paso en curso y repita según sea necesario hasta que finalmente pueda fijar Rails a 5.0.0 .

Una vez que haya resuelto las dependencias de locking y los bundle update rails completen con éxito, confirme eso y ejecute su conjunto de pruebas nuevamente.

Si su suite era como la mía, aquí habrá un muro de desaprobaciones, pero generalmente se repiten algunas cosas para cada prueba. No es estrictamente necesario solucionar estos problemas en este momento, pero abordaría los ruidosos … es posible que dificulten la visión de los más importantes. Tuve que cambiar una tonelada de especificaciones del controlador de post :foo, name: 'bar' a post :foo, params: { name: 'bar' } para silenciar una advertencia de desaprobación de syntax de parámetros con nombre.

También es posible que tenga que actualizar algún código para corregir algunas especificaciones fallidas aquí. Por suerte, no tenía que hacerlo, pero debería poder rastrear la causa raíz hasta un cambio en Rails o una de sus gems si actualizaba alguna.

Ahora, debe ejecutar bin/rails rails:update , para actualizar sus archivos de configuración. Cuidadosamente difunde cada uno de estos para buscar cambios. Prefiero copiar / pegar líneas de la salida de diff y copiarlas manualmente a mi configuración y ajustarlas si es necesario y seguir difiriendo hasta que todo lo que veo sean mis configuraciones personalizadas en el diff.

Después de todo lo que haya hecho, ejecute sus especificaciones nuevamente, abra la aplicación y asegúrese de que funcione como se esperaba. Puede ser útil enviar esto a un entorno de prueba para asegurarse de que se comporte en una configuración similar a la producción, también.

Esperemos que haya terminado ahora, pero hay algunas sutilezas adicionales que puede aportar. Cambio a un nuevo directorio y genero una nueva aplicación Rails con rails new rails5project y copio los nuevos archivos que probablemente no tenga en su aplicación como app/models/application_record.rb y app/mailers/application_mailer.rb (y modelos de transición para heredar de ellos en lugar de ActiveRecord::Base y ActionMailer::Base ).

Además, app/assets/javascripts/cable.js , app/assets/javascripts/channels app/assets/javascripts/cable.js app/assets/javascripts/channels , y app/channels , si quieres usar ActionCable, y app/jobs si quieres usar ActiveJob`

Luego mire el nuevo archivo Gemfile la aplicación Rails 5 y traiga las gems que figuran allí si las desea. Por ejemplo, Rails5 ahora se envía con Turbolinks 5, Puma por defecto, listen y listen spring-watcher-listen .

Con suerte, después de todo esto, tiene una aplicación que funciona y aún satisface todas sus necesidades en Rails 5. Sin embargo, si está bloqueado debido a una dependencia de gems, ¡puede mantener esta sucursal hasta que todo esté listo y fusionarlo!

Solo sigue esto y asegúrate de tener los requisitos mínimos de Ruby

http://guides.rubyonrails.org/upgrading_ruby_on_rails.html

Manera básica de hacerlo (no completamente segura pero la actualizaré):

especifique en su gemfile

 gem 'rails', '5.0.0' 

y luego en tu terminal

 bundle update rails 

Incluso estoy intentando actualizar mi versión de Rails a Rails 5

Esta es una lista de verificación para seguir desde aquí.

  1. Cambia la versión de ruby a 2.2.2

  2. Cree application_record.rb en app/models/ y agregue:

     # app/models/application_record.rb class ApplicationRecord < ActiveRecord::Base self.abstract_class = true end 

    y asegúrese de que todos sus modelos heredan de él.

     # app/models/user.rb class User < ApplicationRecord end 
  3. Cree application_job.rb en app/jobs/ y agregue:

     # app/jobs/application_job.rb class ApplicationJob < ActiveJob::Base end 
  4. Cambia la versión de rails en Gemfile

     gem 'rails', '5.0.0' 
  5. Reemplace el debugger con byebug .

    El depurador no es compatible con Ruby 2.2, que es requerido por Rails 5.

     gem 'byebug' 
  6. atar las gems

     bundle install 

    bundle install generará errores o advertencias para algunas gems, cambiará su versión a la versión requerida mediante rails 5