Skip to content

2019_05 Actualización de rails 5.1 a rails 5.2

Vladimir Támara Patiño edited this page Sep 3, 2020 · 1 revision

En general ha sido un proceso sencillo y se nota aumento en la velocidad de arranque con la gema bootsnap.

Lo que se ha hecho es:

  1. En el Gemfile cambiar la versión de rails por al menos 5.2.1 (hay problemas con la 5.2.0 y Minitest), en Gemfile:
gem "rails", '~> 5.2.1'

y agregar

gem 'bootsnap', '>=1.1.0', require: false
  1. En config/boot.rb (o en el caso de motores en test/dummy/config/boot.rb) agregar:
require 'bootsnap/setup'
  1. Si no se hizo antes, eliminar de config/initializers/new_framework_defaults.rb (o test/dummy/config/initializers/new_framework_defaults.rb en el caso de motores) las líneas
# Require `belongs_to` associations by default. Previous versions had false
Rails.application.config.active_record.belongs_to_required_by_default = false

o bien remplazar false por true

  1. En sitios de producción cifrar secretos con:
EDITOR=vim rails credentials:edit
RAILS_ENV=production EDITOR=vim rails credentials:edit
  1. Con 5.2 se esperan los diversos recursos gráficos en app/assets/images (tubería de recursos) y no en public/images. Una ventaja de esto es que ya no se requiere reubicar los recursos gráficos cuando se cambia el punto de montaje de la aplicación (por ejemplo si el punto de montaje fuera /miruta/ debían reubicarse en public/miruta/images). Ha bastado:
mv public/images/* app/assets/images/

Los diversos favicon también deben quedar en app/assets/images pero favicon.ico debe quedar duplicado en app/assets/images y en public:

cp app/assets/images/favicon.ico public/
  1. Hemos notado que es más exigente en el uso de has_and_belongs_to_many para tablas combinadas entre dos tablas (sin campos adicionales fuera de las dos llaves foranaes). Si se usan dos relaciones has_many y otra has_many con through: en estos casos, produce error al intentar crear nuevos registros. Esto puede evitarse quitando de config/application.rb la línea config.load_defaults 5.2. Pero es mejor transformar las relaciones con tablas combinadas simple a has_and_belongs_to_many.
Clone this wiki locally