-
-
Notifications
You must be signed in to change notification settings - Fork 8
2020_12 Actualización de rails 6.0 a rails 6.1
Aplica el procedimiento general de actualización descrito en {ACT2020}, al que complementariamos que primero deben actualizarse los motores desde los más básicos (en Pasos de Jesús comenzamos con sip
) hasta los que usen más motores. A medida que se actualicen todos los motores y librerías de las que dependa una aplicación esta puede actualizarse.
La actualización de cada motor o aplicación se hace como se explica en {ACT2020}:
- Tener pruebas de regresión operando en la última versión parche de la serie 6.0 (e.g 6.0.3.5)
- Pasar a la última versión parche de la versión menor siguiente (e.g 6.1.3) especificandolo en
Gemfile
por ejemplo con:
gem 'rails', '~> 6.1'
- Actualizar dependencias a unas que usen Rails 6.1 y ejecutar
bundle update; bundle install
- Ejecutar
bin/rails app:update
para actualizar archivos manejados por rails (en algunos motores puede requerir ejecutarlo tanto en el directorio principal como entest/dummy
). Se remplazarán algunos archivos (debe ser especialmente cuidadoso y mezclar cambios aconfig/boot.rb
,config/routes.rb
,config/application.rb
,config/environment.rb
,config/initializers/assets.rb
y en sitios de producción conconfig/environments/production.rb
) y se crearán por lo menos archivosconfig/initializers/permissions_policy.rb
,config/initializers/new_framework_defaults_6_1.rb
, así como migraciones paraActiveStorage
que puede eliminar si no usaActiveStorage
. - Contar con
bin/yarn
en aplicaciones o contest/dummy/bin/yarn
en motores. Puede copiarlo de una aplicación rails nueva o por ejemplo de https://raw.githubusercontent.com/pasosdeJesus/sip/rails61/test/dummy/bin/yarn - Editar
config/initializers/new_framework_defaults_6_1.rb
y activar las diversas opciones de configuración, mientras se lean notas específicas de cada una en {ACT2020} - Asegurar que siguen pasando las pruebas de regresión y/o arreglar.
Una vez han pasado las pruebas en todos los motores y aplicaciones cambiar en cada uno en config/application.rb
:
config.load_defaults 6.1
Y finalmente eliminar en cada motor y aplicación el archivo config/initializers/new_framework_defaults_6_1.rb
y la línea config.load_defaults 6.1
de config/application.rb
El método para tener variables de configuración para un motor descrito en
https://stackoverflow.com/questions/20734766/rails-mountable-engine-how-should-apps-set-configuration-variables#20735466 y usando en varios motores de Pasos de Jesús no opera y produce el error TypeError: module attributes should be defined directly on class, not singleton
.
La solución recomendada en https://github.com/rails/rails/issues/40831 es no usar una clase singleton para declarar las variables como mattr_accessor
y para definirlas, sino declararlas y definirlas directamente en el módulo del motor usando self
. Por ejemplo en cor1440_gen
en lib/cor1440_gen/engine.rb
se cambiaron declaraciones y definiciones de la forma:
class << self
mattr_accessor :actividadg1
self.actividadg1 = "Mujeres organización"
end
por
self.mattr_accessor :actividadg1
self.actividadg1 = "Mujeres organización"
- Las consultas con
pluck
en 6.1 no reciben una lista (como en 6.0) sino una serie de parámetros. En lugar decons.pluck([:id, :nombre])
usarcons.pluck(:id, :nombre)
o con el operador splashcons.pluck(*[:id, :nombre])
-
ActiveRecord::Base.configurations[Rails.env]
usa símbolos como llaves en 6.1, mientras que usaba cadenas como llaves en 6.0. Así en lugar deActiveRecord::Base.configurations['development']['database']
debe usarseActiveRecord::Base.configurations['development'][:database]
- Con algunas aplicaciones nos ha ocurrido que se congelan en ejecución cuando están regenerando recursos (parece en medio de la generación de recursos manejados por sprockets). Nos ha servido:
- Asegurar que
config/initializers/assets.rb
está vacio para tomar configuración proveniente desip
- En
app/assets/stylesheets/application.css
dejarrequire self
como última entrada, yrequire_tree .
como penúltima. - En
config/initializers/punto_montaje.rb
no anteponer / a la ruta de los recurso es decirsip/assets
en lugar de/sip/assets
- Asegurar que
Reportamos un error en rails 6.1 que nos requirió devolver temporalmente de 6.1 a 6.0, en lugar de deshacer commits nos funcionó:
- Cambiar la versión en
Gemfile
(y en gemas podría requerirse también en el archivo.gemspec
) - En el archivo
config.ru
quitar la líneaRails.application.load_server
Desarrollado por Pasos de Jesús. Dominio público de acuerdo a legislación colombiana. Agradecemos financiación para personalizaciones de dominio público a diversas organizaciones, ver https://github.com/pasosdeJesus/sivel2/blob/master/CREDITOS.md
- Validación de etiquetas de Colombia y sus departamentos entre OSM de Sep.2022 y DIVIPOLA 2022
- Actualización a DIVIPOLA 2022-07 y Resumen ejecutivo de la actualización a DIVIPOLA 2022-07
- Actualización a DIVIPOLA 2021 y Resumen ejecutivo de la actualización a DIVIPOLA 2021
- Actualización a Rails 7
- Actualización a DIVIPOLA 2020 y Resumen ejecutivo de la actualización a DIVIPOLA 2020
- Extensiones para Chomium útiles para desarrollo
- Actualización de sip 2.0b11 a 2.0b12
- Actualización de sip 2.0b10 a 2.0b11
- Actualización de Rails 6.0 a Rails 6.1
- Resumen ejecutivo de la actualización a DIVIPOLA 2019
- Actualización a DIVIPOLA 2019
- Actualización-de-sip-2.0b6-a-sip-2.0b7
- Pasando de sprockets a webpacker con Rails 6
- Actualización a Rails 6 en 6 pasos
- Actualización a DIVIPOLA 2018
- Actualización de Rails 5.1 a Rails 5.2
- Actualizando a Rails 5
- Actualización a PostgreSQL posterior a 10.2