1 Actualización a Rails 7.0
Si estás actualizando una aplicación existente, es una buena idea tener una buena cobertura de pruebas antes de comenzar. También debes actualizar primero a Rails 6.1 en caso de que no lo hayas hecho y asegurarte de que tu aplicación siga funcionando 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 de Actualización de Ruby on Rails.
2 Características principales
3 Railties
Por favor, consulta el registro de cambios para ver los cambios detallados.
3.1 Eliminaciones
- Eliminar
config
obsoleto endbconsole
.
3.2 Deprecaciones
3.3 Cambios destacados
Sprockets ahora es una dependencia opcional
La gema
rails
ya no depende desprockets-rails
. Si tu aplicación aún necesita usar Sprockets, asegúrate de agregarsprockets-rails
a tu Gemfile.gem "sprockets-rails"
4 Action Cable
Por favor, consulta el registro de cambios para ver los cambios detallados.
4.1 Eliminaciones
4.2 Deprecaciones
4.3 Cambios destacados
5 Action Pack
Por favor, consulta el registro de cambios para ver los 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 el soporte obsoleto para pasar una ruta relativa a
fixture_file_upload
en relación afixture_path
.
5.2 Deprecaciones
5.3 Cambios destacados
6 Action View
Por favor, consulta el registro de cambios para ver los cambios detallados.
6.1 Eliminaciones
- Eliminar
Rails.config.action_view.raise_on_missing_translations
obsoleto.
6.2 Deprecaciones
6.3 Cambios destacados
button_to
infiere el verbo HTTP [method] de un objeto Active Record si se utiliza para construir la URLbutton_to("Hacer un 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 registro de cambios para ver los cambios detallados.
7.1 Eliminaciones
- Eliminar
ActionMailer::DeliveryJob
yActionMailer::Parameterized::DeliveryJob
obsoletos a favor deActionMailer::MailDeliveryJob
.
7.2 Deprecaciones
7.3 Cambios destacados
8 Active Record
Por favor, consulta el registro de cambios para ver los cambios detallados.
8.1 Eliminaciones
Eliminar el argumento
database
obsoleto deconnected_to
.Eliminar
ActiveRecord::Base.allow_unsafe_raw_sql
obsoleto.Eliminar la opción obsoleta
:spec_name
en el métodoconfigs_for
.Eliminar el soporte obsoleto para cargar instancias de
ActiveRecord::Base
en formato Rails 4.2 y 4.1 desde YAML.Eliminar advertencia de deprecación cuando se utiliza la columna
:interval
en la base de datos de 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 el soporte obsoleto para resolver la conexión utilizando
"primary"
como nombre de especificación de conexión.Eliminar el soporte obsoleto para citar objetos
ActiveRecord::Base
.Eliminar el soporte obsoleto para convertir objetos
ActiveRecord::Base
en valores de base de datos.Eliminar el soporte obsoleto para pasar una columna a
type_cast
.Eliminar el método
DatabaseConfig#config
obsoleto.Eliminar las tareas de 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 el soporte obsoleto para
Model.reorder(nil).first
para buscar utilizando un orden no determinista.Eliminar los 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
- Deprecar
Tasks::DatabaseTasks.schema_file_type
.
8.3 Cambios destacados
Deshacer transacciones cuando el bloque devuelve antes de lo esperado.
Antes de este cambio, cuando un bloque de transacción se devolvía temprano, la transacción se confirmaba.
El problema es que las expiraciones de tiempo de espera dentro del bloque de transacción también hacían que la transacción incompleta se confirmara, por lo que, para evitar este error, se deshace la transacción.
La combinación de condiciones en la misma columna ya no mantiene ambas condiciones, y será reemplazada de manera consistente por la última condición.
# Rails 6.1 (la cláusula IN es reemplazada por una condición de igualdad en el lado del combinador) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] # Rails 6.1 (ambas condiciones de conflicto 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 combinador se reemplaza de manera consistente) 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
Consulte el registro de cambios para obtener cambios detallados.
9.1 Eliminaciones
9.2 Deprecaciones
9.3 Cambios destacados
10 Active Model
Consulte el registro de cambios para obtener cambios detallados.
10.1 Eliminaciones
Eliminar la 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 el soporte obsoleto para concatenar errores en
ActiveModel::Errors#messages
.Eliminar el soporte obsoleto para borrar errores de
ActiveModel::Errors#messages
.Eliminar el soporte obsoleto para eliminar errores de
ActiveModel::Errors#messages
.Eliminar el soporte para usar
[]=
enActiveModel::Errors#messages
.Eliminar el soporte para cargar el formato de error de Rails 5.x mediante Marshal y YAML.
Eliminar el soporte para cargar el formato
ActiveModel::AttributeSet
de Rails 5.x mediante Marshal.
10.2 Deprecaciones
10.3 Cambios destacados
11 Active Support
Consulte el registro de cambios para obtener cambios detallados.
11.1 Eliminaciones
Eliminar
config.active_support.use_sha1_digests
obsoleto.Eliminar
URI.parser
obsoleto.Se ha eliminado el 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
Deprecar pasar un formato a
#to_s
en favor de#to_fs
enArray
,Range
,Date
,DateTime
,Time
,BigDecimal
,Float
eInteger
.Esta deprecación permite que las aplicaciones de 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
anulado en esas clases, las aplicaciones existentes pueden usarconfig.active_support.disable_to_s_conversion
.
11.3 Cambios destacados
12 Active Job
Consulte el registro de cambios para obtener cambios detallados.
12.1 Eliminaciones
Se eliminó el 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 la opción obsoleta
:return_false_on_aborted_enqueue
.
12.2 Deprecaciones
- Deprecar
Rails.config.active_job.skip_after_callbacks_if_terminated
.
12.3 Cambios destacados
13 Action Text
Consulte el registro de cambios para obtener cambios detallados.
13.1 Eliminaciones
13.2 Deprecaciones
13.3 Cambios destacados
14 Action Mailbox
Consulte el registro de cambios para obtener cambios detallados.
14.1 Eliminaciones
Se eliminó
Rails.application.credentials.action_mailbox.mailgun_api_key
obsoleto.Se eliminó la variable de entorno obsoleta
MAILGUN_INGRESS_API_KEY
.
14.2 Deprecaciones
14.3 Cambios destacados
15 Ruby on Rails Guides
Consulte el registro de cambios para obtener cambios detallados.
15.1 Cambios destacados
16 Créditos
Consulte la lista completa de colaboradores de Rails para conocer a las muchas personas que pasaron muchas horas haciendo 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.