edge
Más en rubyonrails.org: Más Ruby on Rails

Notas de lanzamiento de Ruby on Rails 7.0

Aspectos destacados en Rails 7.0:

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 en dbconsole.

3.2 Deprecaciones

3.3 Cambios destacados

  • 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 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 a fixture_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 URL

    button_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 y ActionMailer::Parameterized::DeliveryJob obsoletos a favor de ActionMailer::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 de connected_to.

  • Eliminar ActiveRecord::Base.allow_unsafe_raw_sql obsoleto.

  • Eliminar la opción obsoleta :spec_name en el método configs_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 y name obsoletos de Tasks::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! y ActiveRecord::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 []= en ActiveModel::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 en Array, Range, Date, DateTime, Time, BigDecimal, Float e Integer.

    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 usar config.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 con throw :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.