1 Actualización a Rails 7.0
Si estás actualizando una aplicación existente, es una gran idea tener una buena cobertura de pruebas antes de comenzar. También deberías primero actualizar a Rails 6.1 en caso de que no lo hayas hecho y asegurarte de que tu aplicación aún funcione como se espera antes de intentar una actualización a Rails 7.0. Una lista de cosas a tener en cuenta al actualizar está disponible en la guía Actualización de Ruby on Rails.
2 Características principales
3 Railties
Por favor, consulta el Changelog para obtener cambios detallados.
3.1 Eliminaciones
- Eliminar
config
obsoleto endbconsole
.
3.2 Deprecaciones
3.3 Cambios notables
- Sprockets ahora es una dependencia opcional
La gema rails
ya no depende de sprockets-rails
. Si tu aplicación aún necesita usar Sprockets, asegúrate de agregar sprockets-rails
a tu Gemfile.
gem "sprockets-rails"
4 Action Cable
Por favor, consulta el Changelog para obtener cambios detallados.
4.1 Eliminaciones
4.2 Deprecaciones
4.3 Cambios notables
5 Action Pack
Por favor, consulta el Changelog para obtener cambios detallados.
5.1 Eliminaciones
Eliminar
ActionDispatch::Response.return_only_media_type_on_content_type
obsoleto.Eliminar
Rails.config.action_dispatch.hosts_response_app
obsoleto.Eliminar
ActionDispatch::SystemTestCase#host!
obsoleto.Eliminar soporte obsoleto para pasar una ruta a
fixture_file_upload
relativa afixture_path
.
5.2 Deprecaciones
5.3 Cambios notables
6 Action View
Por favor, consulta el Changelog para obtener cambios detallados.
6.1 Eliminaciones
- Eliminar
Rails.config.action_view.raise_on_missing_translations
obsoleto.
6.2 Deprecaciones
6.3 Cambios notables
button_to
infiere el verbo HTTP [método] de un objeto Active Record si el objeto se usa para construir la URL.
button_to("Do a POST", [:do_post_action, Workshop.find(1)])
# Antes
#=> <input type="hidden" name="_method" value="post" autocomplete="off" />
# Después
#=> <input type="hidden" name="_method" value="patch" autocomplete="off" />
7 Action Mailer
Por favor, consulta el Changelog para obtener cambios detallados.
7.1 Eliminaciones
- Eliminar
ActionMailer::DeliveryJob
yActionMailer::Parameterized::DeliveryJob
obsoletos en favor deActionMailer::MailDeliveryJob
.
7.2 Deprecaciones
7.3 Cambios notables
8 Active Record
Por favor, consulta el Changelog para obtener cambios detallados.
8.1 Eliminaciones
Eliminar argumento
database
obsoleto deconnected_to
.Eliminar
ActiveRecord::Base.allow_unsafe_raw_sql
obsoleto.Eliminar opción
:spec_name
obsoleta en el métodoconfigs_for
.Eliminar soporte obsoleto para cargar YAML
ActiveRecord::Base
en los formatos de Rails 4.2 y 4.1.Eliminar advertencia de deprecación cuando se utiliza la columna
:interval
en la base de datos PostgreSQL.
Ahora, las columnas de intervalo devolverán objetos ActiveSupport::Duration
en lugar de cadenas.
Para mantener el comportamiento anterior, puedes agregar esta línea a tu modelo:
attribute :column, :string
Eliminar soporte obsoleto para resolver la conexión usando
"primary"
como nombre de especificación de conexión.Eliminar soporte obsoleto para citar objetos
ActiveRecord::Base
.Eliminar soporte obsoleto para convertir a valores de base de datos objetos
ActiveRecord::Base
.Eliminar soporte obsoleto para pasar una columna a
type_cast
.Eliminar método
DatabaseConfig#config
obsoleto.Eliminar tareas rake obsoletas:
db:schema:load_if_ruby
db:structure:dump
db:structure:load
db:structure:load_if_sql
db:structure:dump:#{name}
db:structure:load:#{name}
db:test:load_structure
db:test:load_structure:#{name}
Eliminar soporte obsoleto para
Model.reorder(nil).first
para buscar usando orden no determinista.Eliminar argumentos
environment
yname
obsoletos deTasks::DatabaseTasks.schema_up_to_date?
.Eliminar
Tasks::DatabaseTasks.dump_filename
obsoleto.Eliminar
Tasks::DatabaseTasks.schema_file
obsoleto.Eliminar
Tasks::DatabaseTasks.spec
obsoleto.Eliminar
Tasks::DatabaseTasks.current_config
obsoleto.Eliminar
ActiveRecord::Connection#allowed_index_name_length
obsoleto.Eliminar
ActiveRecord::Connection#in_clause_length
obsoleto.Eliminar
ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name
obsoleto.Eliminar
ActiveRecord::Base.connection_config
obsoleto.Eliminar
ActiveRecord::Base.arel_attribute
obsoleto.Eliminar
ActiveRecord::Base.configurations.default_hash
obsoleto.Eliminar
ActiveRecord::Base.configurations.to_h
obsoleto.Eliminar
ActiveRecord::Result#map!
yActiveRecord::Result#collect!
obsoletos.Eliminar
ActiveRecord::Base#remove_connection
obsoleto.
8.2 Deprecaciones
- Deprecado
Tasks::DatabaseTasks.schema_file_type
.
8.3 Cambios notables
- Revertir transacciones cuando el bloque regresa antes de lo esperado.
Antes de este cambio, cuando un bloque de transacción regresaba temprano, la transacción se comprometía.
El problema es que los tiempos de espera activados dentro del bloque de transacción también hacían que la transacción incompleta se comprometiera, por lo que para evitar este error, el bloque de transacción se revierte.
- Fusionar condiciones en la misma columna ya no mantiene ambas condiciones, y serán reemplazadas consistentemente por la última condición.
# Rails 6.1 (la cláusula IN es reemplazada por la condición de igualdad del lado de la fusión)
Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
# Rails 6.1 (ambas condiciones conflictivas existen, obsoleto)
Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => []
# Rails 6.1 con rewhere para migrar al comportamiento de Rails 7.0
Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob]
# Rails 7.0 (mismo comportamiento con cláusula IN, la condición del lado de la fusión es reemplazada consistentemente)
Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
9 Active Storage
Por favor, consulta el Changelog para obtener cambios detallados.
9.1 Eliminaciones
9.2 Deprecaciones
9.3 Cambios notables
10 Active Model
Por favor, consulta el Changelog para obtener cambios detallados.
10.1 Eliminaciones
Eliminar enumeración obsoleta de instancias de
ActiveModel::Errors
como un Hash.Eliminar
ActiveModel::Errors#to_h
obsoleto.Eliminar
ActiveModel::Errors#slice!
obsoleto.Eliminar
ActiveModel::Errors#values
obsoleto.Eliminar
ActiveModel::Errors#keys
obsoleto.Eliminar
ActiveModel::Errors#to_xml
obsoleto.Eliminar soporte obsoleto para concatenar errores a
ActiveModel::Errors#messages
.Eliminar soporte obsoleto para
clear
errores deActiveModel::Errors#messages
.Eliminar soporte obsoleto para
delete
errores deActiveModel::Errors#messages
.Eliminar soporte obsoleto para usar
[]=
enActiveModel::Errors#messages
.Eliminar soporte para cargar con Marshal y YAML el formato de errores de Rails 5.x.
Eliminar soporte para cargar con Marshal el formato de
ActiveModel::AttributeSet
de Rails 5.x.
10.2 Deprecaciones
10.3 Cambios notables
11 Active Support
Por favor, consulta el Changelog para obtener cambios detallados.
11.1 Eliminaciones
Eliminar
config.active_support.use_sha1_digests
obsoleto.Eliminar
URI.parser
obsoleto.Eliminar soporte obsoleto para usar
Range#include?
para verificar la inclusión de un valor en un rango de fecha y hora.Eliminar
ActiveSupport::Multibyte::Unicode.default_normalization_form
obsoleto.
11.2 Deprecaciones
- Deprecado pasar un formato a
#to_s
en favor de#to_fs
enArray
,Range
,Date
,DateTime
,Time
,BigDecimal
,Float
eInteger
.
Esta deprecación es para permitir que las aplicaciones Rails aprovechen una optimización de Ruby 3.1 que hace que la interpolación de algunos tipos de objetos sea más rápida.
Las nuevas aplicaciones no tendrán el método #to_s
sobrescrito en esas clases, las aplicaciones existentes pueden usar config.active_support.disable_to_s_conversion
.
11.3 Cambios notables
12 Active Job
Por favor, consulta el Changelog para obtener cambios detallados.
12.1 Eliminaciones
Eliminado comportamiento obsoleto que no detenía las devoluciones de llamada
after_enqueue
/after_perform
cuando una devolución de llamada anterior se detenía conthrow :abort
.Eliminar opción
:return_false_on_aborted_enqueue
obsoleta.
12.2 Deprecaciones
- Deprecado
Rails.config.active_job.skip_after_callbacks_if_terminated
.
12.3 Cambios notables
13 Action Text
Por favor, consulta el Changelog para obtener cambios detallados.
13.1 Eliminaciones
13.2 Deprecaciones
13.3 Cambios notables
14 Action Mailbox
Por favor, consulta el Changelog para obtener cambios detallados.
14.1 Eliminaciones
Eliminado
Rails.application.credentials.action_mailbox.mailgun_api_key
obsoleto.Eliminada variable de entorno
MAILGUN_INGRESS_API_KEY
obsoleta.
14.2 Deprecaciones
14.3 Cambios notables
15 Guías de Ruby on Rails
Por favor, consulta el Changelog para obtener cambios detallados.
15.1 Cambios notables
16 Créditos
Consulta la lista completa de contribuyentes a Rails para conocer a las muchas personas que dedicaron muchas horas a hacer de Rails el marco estable y robusto que es. Kudos a todos ellos.
Comentarios
Se te anima a ayudar a mejorar la calidad de esta guía.
Por favor contribuye si ves algún error tipográfico o errores fácticos. Para comenzar, puedes leer nuestra sección de contribuciones a la documentación.
También puedes encontrar contenido incompleto o cosas que no están actualizadas. Por favor agrega cualquier documentación faltante para main. Asegúrate de revisar Guías Edge primero para verificar si los problemas ya están resueltos o no en la rama principal. Revisa las Guías de Ruby on Rails para estilo y convenciones.
Si por alguna razón detectas algo que corregir pero no puedes hacerlo tú mismo, por favor abre un issue.
Y por último, pero no menos importante, cualquier tipo de discusión sobre la documentación de Ruby on Rails es muy bienvenida en el Foro oficial de Ruby on Rails.