1 Actualización a Rails 6.1
Si está actualizando una aplicación existente, es una buena idea tener una buena cobertura de pruebas antes de comenzar. También debe actualizar primero a Rails 6.0 en caso de que aún no lo haya hecho y asegurarse de que su aplicación siga funcionando como se espera antes de intentar una actualización a Rails 6.1. Una lista de cosas a tener en cuenta al actualizar está disponible en la guía de Actualización de Ruby on Rails.
2 Funcionalidades principales
2.1 Cambio de conexión por base de datos
Rails 6.1 le proporciona la capacidad de cambiar de conexión por base de datos. En la versión 6.0, si cambiaba al rol de "lectura", todas las conexiones de la base de datos también cambiaban al rol de lectura. Ahora, en la versión 6.1, si configura legacy_connection_handling
en false
en su configuración, Rails le permitirá cambiar de conexión para una sola base de datos llamando a connected_to
en la clase abstracta correspondiente.
2.2 Fragmentación horizontal
Rails 6.0 proporcionaba la capacidad de particionar funcionalmente (múltiples particiones, esquemas diferentes) su base de datos, pero no podía admitir la fragmentación horizontal (mismo esquema, múltiples particiones). Rails no podía admitir la fragmentación horizontal porque los modelos en Active Record solo podían tener una conexión por rol por clase. Esto ahora se ha solucionado y la fragmentación horizontal con Rails está disponible.
2.3 Carga estricta de asociaciones
La carga estricta de asociaciones le permite asegurarse de que todas sus asociaciones se carguen de forma anticipada y evitar los problemas de N+1.
2.4 Tipos delegados
Tipos delegados es una alternativa a la herencia de una sola tabla. Esto ayuda a representar jerarquías de clases permitiendo que la superclase sea una clase concreta que se representa en su propia tabla. Cada subclase tiene su propia tabla para atributos adicionales.
2.5 Destrucción de asociaciones de forma asíncrona
Destrucción de asociaciones de forma asíncrona agrega la capacidad para que las aplicaciones "destruyan" asociaciones en un trabajo en segundo plano. Esto puede ayudarlo a evitar tiempos de espera y otros problemas de rendimiento en su aplicación al eliminar datos.
3 Railties
Consulte el registro de cambios para obtener cambios detallados.
3.1 Eliminaciones
Eliminar las tareas
rake notes
obsoletas.Eliminar la opción
connection
obsoleta en el comandorails dbconsole
.Eliminar el soporte obsoleto de la variable de entorno
SOURCE_ANNOTATION_DIRECTORIES
enrails notes
.Eliminar el argumento
server
obsoleto del comandorails server
.Eliminar el soporte obsoleto para usar la variable de entorno
HOST
para especificar la IP del servidor.Eliminar las tareas
rake dev:cache
obsoletas.Eliminar las tareas
rake routes
obsoletas.Eliminar las tareas
rake initializers
obsoletas.
3.2 Deprecaciones
3.3 Cambios destacados
4 Action Cable
Consulte el registro de cambios para obtener cambios detallados.
4.1 Eliminaciones
4.2 Deprecaciones
4.3 Cambios destacados
5 Action Pack
Consulte el registro de cambios para obtener cambios detallados.
5.1 Eliminaciones
Eliminar
ActionDispatch::Http::ParameterFilter
obsoleto.Eliminar
force_ssl
obsoleto a nivel de controlador.
5.2 Deprecaciones
- Deprecar
config.action_dispatch.return_only_media_type_on_content_type
.
5.3 Cambios destacados
- Cambiar
ActionDispatch::Response#content_type
para devolver el encabezado completo de Content-Type.
6 Action View
Consulte el registro de cambios para obtener cambios detallados.
6.1 Eliminaciones
Eliminar
escape_whitelist
obsoleto deActionView::Template::Handlers::ERB
.Eliminar
find_all_anywhere
obsoleto deActionView::Resolver
.Eliminar
formats
obsoleto deActionView::Template::HTML
.Eliminar
formats
obsoleto deActionView::Template::RawFile
.Eliminar
formats
obsoleto deActionView::Template::Text
.Eliminar
find_file
obsoleto deActionView::PathSet
.Eliminar
rendered_format
obsoleto deActionView::LookupContext
.Eliminar
find_file
obsoleto deActionView::ViewPaths
.Eliminar el soporte obsoleto para pasar un objeto que no es un
ActionView::LookupContext
como primer argumento enActionView::Base#initialize
.Eliminar el argumento
format
obsoleto enActionView::Base#initialize
.Eliminar
ActionView::Template#refresh
obsoleto.Eliminar
ActionView::Template#original_encoding
obsoleto.Eliminar
ActionView::Template#variants
obsoleto.Eliminar
ActionView::Template#formats
obsoleto.Eliminar
ActionView::Template#virtual_path=
obsoleto.Eliminar
ActionView::Template#updated_at
obsoleto.Eliminar el argumento
updated_at
requerido enActionView::Template#initialize
.Eliminar
ActionView::Template.finalize_compiled_template_methods
obsoleto.Eliminar
config.action_view.finalize_compiled_template_methods
obsoleto.Eliminar el soporte obsoleto para llamar a
ActionView::ViewPaths#with_fallback
con un bloque.Eliminar el soporte obsoleto para pasar rutas absolutas a
render template:
.Eliminar el soporte obsoleto para pasar rutas relativas a
render file:
.Eliminar el soporte para manejadores de plantillas que no aceptan dos argumentos.
Eliminar el argumento de patrón obsoleto en
ActionView::Template::PathResolver
.Eliminar el soporte obsoleto para llamar a métodos privados de un objeto en algunos ayudantes de vista.
6.2 Deprecaciones
6.3 Cambios destacados
Requerir que las subclases de
ActionView::Base
implementen#compiled_method_container
.Hacer que el argumento
locals
sea obligatorio enActionView::Template#initialize
.Los ayudantes de activos
javascript_include_tag
ystylesheet_link_tag
generan una cabeceraLink
que proporciona pistas a los navegadores modernos sobre la precarga de activos. Esto se puede desactivar configurandoconfig.action_view.preload_links_header
comofalse
.
7 Action Mailer
Consulte el registro de cambios para obtener cambios detallados.
7.1 Eliminaciones
- Eliminar
ActionMailer::Base.receive
en desuso a favor de Action Mailbox.
7.2 Deprecaciones
7.3 Cambios destacados
8 Active Record
Consulte el registro de cambios para obtener cambios detallados.
8.1 Eliminaciones
Eliminar métodos en desuso de
ActiveRecord::ConnectionAdapters::DatabaseLimits
.column_name_length
table_name_length
columns_per_table
indexes_per_table
columns_per_multicolumn_index
sql_query_length
joins_per_query
Eliminar
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_multi_insert?
en desuso.Eliminar
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_foreign_keys_in_create?
en desuso.Eliminar
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#supports_ranges?
en desuso.Eliminar
ActiveRecord::Base#update_attributes
yActiveRecord::Base#update_attributes!
en desuso.Eliminar el argumento
migrations_path
en desuso enActiveRecord::ConnectionAdapter::SchemaStatements#assume_migrated_upto_version
.Eliminar
config.active_record.sqlite3.represent_boolean_as_integer
en desuso.Eliminar métodos en desuso de
ActiveRecord::DatabaseConfigurations
.fetch
each
first
values
[]=
Eliminar el método
ActiveRecord::Result#to_hash
en desuso.Eliminar el soporte en desuso para el uso de SQL sin procesar inseguro en los métodos de
ActiveRecord::Relation
.
8.2 Deprecaciones
Deprecar
ActiveRecord::Base.allow_unsafe_raw_sql
.Deprecar el argumento
database
enconnected_to
.Deprecar
connection_handlers
cuandolegacy_connection_handling
se establece en false.
8.3 Cambios destacados
MySQL: El validador de unicidad ahora respeta la intercalación predeterminada de la base de datos, ya no impone una comparación sensible a mayúsculas y minúsculas de forma predeterminada.
relation.create
ya no filtra el ámbito a los métodos de consulta a nivel de clase en el bloque de inicialización y en los callbacks.Antes:
User.where(name: "John").create do |john| User.find_by(name: "David") # => nil end
Después:
User.where(name: "John").create do |john| User.find_by(name: "David") # => #<User name: "David", ...> end
La cadena de ámbito con nombre ya no filtra el ámbito a los métodos de consulta a nivel de clase.
class User < ActiveRecord::Base scope :david, -> { User.where(name: "David") } end
Antes:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'John' AND name = 'David'
Después:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'David'
where.not
ahora genera predicados NAND en lugar de NOR.Antes:
User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE name != 'Jon' AND role != 'admin'
Después:
User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE NOT (name = 'Jon' AND role = 'admin')
Para utilizar el nuevo manejo de conexiones por base de datos, las aplicaciones deben cambiar
legacy_connection_handling
a false y eliminar los accesos en desuso enconnection_handlers
. Los métodos públicos paraconnects_to
yconnected_to
no requieren cambios.
9 Active Storage
Consulte el registro de cambios para obtener cambios detallados.
9.1 Eliminaciones
Eliminar el soporte en desuso para pasar operaciones
:combine_options
aActiveStorage::Transformers::ImageProcessing
.Eliminar
ActiveStorage::Transformers::MiniMagickTransformer
en desuso.Eliminar
config.active_storage.queue
en desuso.Eliminar
ActiveStorage::Downloading
en desuso.
9.2 Deprecaciones
- Deprecar
Blob.create_after_upload
a favor deBlob.create_and_upload
. (Pull Request)
9.3 Cambios destacados
- Agregar
Blob.create_and_upload
para crear un nuevo blob y cargar elio
dado al servicio. (Pull Request) - Se agregó la columna
service_name
aActiveStorage::Blob
. Es necesario ejecutar una migración después de la actualización. Ejecutebin/rails app:update
para generar esa migración.
10 Active Model
Consulte el registro de cambios para obtener cambios detallados.
10.1 Eliminaciones
10.2 Deprecaciones
10.3 Cambios destacados
- Los errores de Active Model ahora son objetos con una interfaz que permite a su aplicación manejar e interactuar más fácilmente con los errores generados por los modelos. La característica incluye una interfaz de consulta, permite pruebas más precisas y acceso a los detalles del error.
11 Active Support
Consulte el registro de cambios para obtener cambios detallados.
11.1 Eliminaciones
Eliminar la intercalación predeterminada a
I18n.default_locale
cuandoconfig.i18n.fallbacks
está vacío.Eliminar la constante
LoggerSilence
en desuso.Eliminar
ActiveSupport::LoggerThreadSafeLevel#after_initialize
en desuso.Eliminar los métodos
Module#parent_name
,Module#parent
yModule#parents
.Eliminar el archivo en desuso
active_support/core_ext/module/reachable
.Eliminar el archivo en desuso
active_support/core_ext/numeric/inquiry
.Eliminar el archivo en desuso
active_support/core_ext/array/prepend_and_append
.Eliminar el archivo en desuso
active_support/core_ext/hash/compact
.Eliminar el archivo en desuso
active_support/core_ext/hash/transform_values
.Eliminar el archivo en desuso
active_support/core_ext/range/include_range
.Eliminar
ActiveSupport::Multibyte::Chars#consumes?
yActiveSupport::Multibyte::Chars#normalize
en desuso.Eliminar
ActiveSupport::Multibyte::Unicode.pack_graphemes
,ActiveSupport::Multibyte::Unicode.unpack_graphemes
,ActiveSupport::Multibyte::Unicode.normalize
,ActiveSupport::Multibyte::Unicode.downcase
,ActiveSupport::Multibyte::Unicode.upcase
yActiveSupport::Multibyte::Unicode.swapcase
en desuso.Eliminar
ActiveSupport::Notifications::Instrumenter#end=
en desuso.
11.2 Deprecaciones
- Deprecar
ActiveSupport::Multibyte::Unicode.default_normalization_form
.
11.3 Cambios destacados
12 Active Job
Consulte el registro de cambios para obtener cambios detallados.
12.1 Eliminaciones
12.2 Deprecaciones
- Deprecar
config.active_job.return_false_on_aborted_enqueue
.
12.3 Cambios destacados
- Devolver
false
cuando se aborta la encolación de un trabajo.
13 Action Text
Consulte el registro de cambios para obtener cambios detallados.
13.1 Eliminaciones
13.2 Deprecaciones
13.3 Cambios destacados
Agregar un método para confirmar la existencia de contenido de texto enriquecido agregando
?
después del nombre del atributo de texto enriquecido. (Pull Request)Agregar el ayudante de caso de prueba del sistema
fill_in_rich_text_area
para encontrar un editor trix y llenarlo con el contenido HTML dado. (Pull Request)Agrega
ActionText::FixtureSet.attachment
para generar elementos<action-text-attachment>
en los fixtures de la base de datos. (Pull Request)
14 Action Mailbox
Consulta el Changelog para obtener cambios detallados.
14.1 Eliminaciones
14.2 Deprecaciones
- Deprecar
Rails.application.credentials.action_mailbox.api_key
yMAILGUN_INGRESS_API_KEY
en favor deRails.application.credentials.action_mailbox.signing_key
yMAILGUN_INGRESS_SIGNING_KEY
.
14.3 Cambios destacados
15 Ruby on Rails Guides
Consulta el Changelog para obtener cambios detallados.
15.1 Cambios destacados
16 Créditos
Consulta la lista completa de contribuyentes a Rails para ver a todas las personas que dedicaron muchas horas a hacer de Rails el marco estable y robusto que es. Felicitaciones a todos ellos.
Comentarios
Se te anima a ayudar a mejorar la calidad de esta guía.
Por favor, contribuye si encuentras algún error tipográfico o factual. Para empezar, puedes leer nuestra contribución a la documentación sección.
También puedes encontrar contenido incompleto o desactualizado. Por favor, añade cualquier documentación faltante para main. Asegúrate de revisar Edge Guides primero para verificar si los problemas ya están resueltos o no en la rama principal. Consulta las Directrices de las Guías de Ruby on Rails para el estilo y las convenciones.
Si por alguna razón encuentras algo que corregir pero no puedes solucionarlo tú mismo, por favor abre un problema.
Y por último, cualquier tipo de discusión sobre la documentación de Ruby on Rails es muy bienvenida en el Foro oficial de Ruby on Rails.