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
configobsoleto 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_typeobsoleto.Eliminar
Rails.config.action_dispatch.hosts_response_appobsoleto.Eliminar
ActionDispatch::SystemTestCase#host!obsoleto.Eliminar soporte obsoleto para pasar una ruta a
fixture_file_uploadrelativa 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_translationsobsoleto.
6.2 Deprecaciones
6.3 Cambios notables
button_toinfiere 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::DeliveryJobyActionMailer::Parameterized::DeliveryJobobsoletos 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
databaseobsoleto deconnected_to.Eliminar
ActiveRecord::Base.allow_unsafe_raw_sqlobsoleto.Eliminar opción
:spec_nameobsoleta en el métodoconfigs_for.Eliminar soporte obsoleto para cargar YAML
ActiveRecord::Baseen los formatos de Rails 4.2 y 4.1.Eliminar advertencia de deprecación cuando se utiliza la columna
:intervalen 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#configobsoleto.Eliminar tareas rake obsoletas:
db:schema:load_if_rubydb:structure:dumpdb:structure:loaddb:structure:load_if_sqldb:structure:dump:#{name}db:structure:load:#{name}db:test:load_structuredb:test:load_structure:#{name}
Eliminar soporte obsoleto para
Model.reorder(nil).firstpara buscar usando orden no determinista.Eliminar argumentos
environmentynameobsoletos deTasks::DatabaseTasks.schema_up_to_date?.Eliminar
Tasks::DatabaseTasks.dump_filenameobsoleto.Eliminar
Tasks::DatabaseTasks.schema_fileobsoleto.Eliminar
Tasks::DatabaseTasks.specobsoleto.Eliminar
Tasks::DatabaseTasks.current_configobsoleto.Eliminar
ActiveRecord::Connection#allowed_index_name_lengthobsoleto.Eliminar
ActiveRecord::Connection#in_clause_lengthobsoleto.Eliminar
ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_nameobsoleto.Eliminar
ActiveRecord::Base.connection_configobsoleto.Eliminar
ActiveRecord::Base.arel_attributeobsoleto.Eliminar
ActiveRecord::Base.configurations.default_hashobsoleto.Eliminar
ActiveRecord::Base.configurations.to_hobsoleto.Eliminar
ActiveRecord::Result#map!yActiveRecord::Result#collect!obsoletos.Eliminar
ActiveRecord::Base#remove_connectionobsoleto.
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::Errorscomo un Hash.Eliminar
ActiveModel::Errors#to_hobsoleto.Eliminar
ActiveModel::Errors#slice!obsoleto.Eliminar
ActiveModel::Errors#valuesobsoleto.Eliminar
ActiveModel::Errors#keysobsoleto.Eliminar
ActiveModel::Errors#to_xmlobsoleto.Eliminar soporte obsoleto para concatenar errores a
ActiveModel::Errors#messages.Eliminar soporte obsoleto para
clearerrores deActiveModel::Errors#messages.Eliminar soporte obsoleto para
deleteerrores 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::AttributeSetde 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_digestsobsoleto.Eliminar
URI.parserobsoleto.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_formobsoleto.
11.2 Deprecaciones
- Deprecado pasar un formato a
#to_sen favor de#to_fsenArray,Range,Date,DateTime,Time,BigDecimal,FloateInteger.
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_performcuando una devolución de llamada anterior se detenía conthrow :abort.Eliminar opción
:return_false_on_aborted_enqueueobsoleta.
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_keyobsoleto.Eliminada variable de entorno
MAILGUN_INGRESS_API_KEYobsoleta.
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.