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

Notas de lanzamiento de Ruby on Rails 6.0

Aspectos destacados en Rails 6.0:

Estas notas de lanzamiento solo cubren los cambios principales. Para conocer las correcciones de errores y cambios diversos, consulte los registros de cambios o revise la lista de confirmaciones en el repositorio principal de Rails en GitHub.

1 Actualización a Rails 6.0

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 5.2 en caso de que 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.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

2.1 Action Mailbox

Solicitud de extracción

Action Mailbox le permite enrutar correos electrónicos entrantes a buzones de correo similares a controladores. Puede obtener más información sobre Action Mailbox en la guía Conceptos básicos de Action Mailbox.

2.2 Action Text

Solicitud de extracción

Action Text brinda contenido de texto enriquecido y edición a Rails. Incluye el editor Trix que maneja todo, desde el formato hasta los enlaces, citas, listas, imágenes incrustadas y galerías. El contenido de texto enriquecido generado por el editor Trix se guarda en su propio modelo RichText que está asociado con cualquier modelo Active Record existente en la aplicación. Cualquier imagen incrustada (u otros archivos adjuntos) se almacenan automáticamente utilizando Active Storage y se asocian con el modelo RichText incluido.

Puede obtener más información sobre Action Text en la guía Descripción general de Action Text.

2.3 Pruebas paralelas

Solicitud de extracción

Pruebas paralelas le permite paralelizar su conjunto de pruebas. Si bien la bifurcación de procesos es el método predeterminado, también se admite el uso de hilos. Ejecutar pruebas en paralelo reduce el tiempo que tarda en ejecutarse todo el conjunto de pruebas.

2.4 Pruebas de Action Cable

Solicitud de extracción

Las herramientas de prueba de Action Cable le permiten probar la funcionalidad de Action Cable en cualquier nivel: conexiones, canales, transmisiones.

3 Railties

Consulte el registro de cambios para obtener cambios detallados.

3.1 Eliminaciones

  • Eliminar el ayudante after_bundle obsoleto dentro de las plantillas de los complementos. (Confirmación)

  • Eliminar el soporte obsoleto para config.ru que utiliza la clase de la aplicación como argumento de run. (Confirmación)

  • Eliminar el argumento obsoleto environment de los comandos de Rails. (Confirmación)

  • Eliminar el método obsoleto capify! en generadores y plantillas. (Confirmación)

  • Eliminar config.secret_token obsoleto. (Confirmación)

3.2 Obsolescencias

3.3 Cambios destacados

  • Agregar una opción explícita --using o -u para especificar el servidor para el comando rails server. (Solicitud de extracción)

  • Agregar la capacidad de ver la salida de rails routes en formato expandido. (Solicitud de extracción)

  • Ejecutar la tarea de la base de datos de semillas utilizando el adaptador Active Job en línea. (Solicitud de extracción)

  • Agregar un comando rails db:system:change para cambiar la base de datos de la aplicación. (Solicitud de extracción)

  • Agregar el comando rails test:channels para probar solo los canales de Action Cable. (Solicitud de extracción)

  • Introducir protección contra ataques de rebinding de DNS. (Pull Request)

  • Agregar la capacidad de abortar en caso de fallo al ejecutar comandos de generador. (Pull Request)

  • Hacer que Webpacker sea el compilador de JavaScript predeterminado para Rails 6. (Pull Request)

  • Agregar soporte para múltiples bases de datos en el comando rails db:migrate:status. (Pull Request)

  • Agregar la capacidad de utilizar rutas de migración diferentes de múltiples bases de datos en los generadores. (Pull Request)

  • Agregar soporte para credenciales de múltiples entornos. (Pull Request)

  • Hacer que null_store sea el almacén de caché predeterminado en el entorno de prueba. (Pull Request)

4 Action Cable

Consulte el registro de cambios para obtener cambios detallados.

4.1 Eliminaciones

  • Reemplazar ActionCable.startDebugging() y ActionCable.stopDebugging() con ActionCable.logger.enabled. (Pull Request)

4.2 Deprecaciones

  • No hay deprecaciones para Action Cable en Rails 6.0.

4.3 Cambios destacados

  • Agregar soporte para la opción channel_prefix para adaptadores de suscripción de PostgreSQL en cable.yml. (Pull Request)

  • Permitir pasar una configuración personalizada a ActionCable::Server::Base. (Pull Request)

  • Agregar ganchos de carga :action_cable_connection y :action_cable_channel. (Pull Request)

  • Agregar Channel::Base#broadcast_to y Channel::Base.broadcasting_for. (Pull Request)

  • Cerrar una conexión al llamar a reject_unauthorized_connection desde una ActionCable::Connection. (Pull Request)

  • Convertir el paquete de JavaScript de Action Cable de CoffeeScript a ES2015 y publicar el código fuente en la distribución de npm. (Pull Request)

  • Mover la configuración del adaptador WebSocket y del adaptador de registro de propiedades de ActionCable a ActionCable.adapters. (Pull Request)

  • Agregar una opción id al adaptador Redis para distinguir las conexiones de Redis de Action Cable. (Pull Request)

5 Action Pack

Consulte el registro de cambios para obtener cambios detallados.

5.1 Eliminaciones

  • Eliminar el ayudante fragment_cache_key en desuso en favor de combined_fragment_cache_key. (Commit)

  • Eliminar los métodos en desuso en ActionDispatch::TestResponse: #success? en favor de #successful?, #missing? en favor de #not_found?, #error? en favor de #server_error?. (Commit)

5.2 Deprecaciones

  • Deprecar ActionDispatch::Http::ParameterFilter en favor de ActiveSupport::ParameterFilter. (Pull Request)

  • Deprecar force_ssl a nivel de controlador en favor de config.force_ssl. (Pull Request)

5.3 Cambios destacados

  • Cambiar ActionDispatch::Response#content_type para devolver el encabezado Content-Type tal cual. (Pull Request)

  • Generar un ArgumentError si un parámetro de recurso contiene dos puntos. (Pull Request)

  • Permitir que ActionDispatch::SystemTestCase.driven_by se llame con un bloque para definir capacidades específicas del navegador. (Pull Request)

  • Agregar el middleware ActionDispatch::HostAuthorization que protege contra ataques de rebinding de DNS. (Pull Request)

  • Permitir el uso de parsed_body en ActionController::TestCase. (Pull Request)

  • Generar un ArgumentError cuando existen múltiples rutas raíz en el mismo contexto sin especificaciones de nombre as:. (Pull Request)

  • Permitir el uso de #rescue_from para manejar errores de análisis de parámetros. (Pull Request)

  • Agregar ActionController::Parameters#each_value para iterar a través de los parámetros. (Pull Request)

  • Codificar los nombres de archivo de Content-Disposition en send_data y send_file. (Pull Request)

  • Exponer ActionController::Parameters#each_key. (Pull Request)

  • Agregar metadatos de propósito y vencimiento dentro de las cookies firmadas/encriptadas para evitar copiar el valor de las cookies entre sí. (Pull Request)

  • Generar ActionController::RespondToMismatchError para invocaciones conflictivas de respond_to. (Pull Request)

  • Agregar una página de error explícita cuando falta una plantilla para un formato de solicitud. (Pull Request)

  • Introducir ActionDispatch::DebugExceptions.register_interceptor, una forma de conectarse a DebugExceptions y procesar la excepción antes de ser renderizada. (Pull Request)

  • Mostrar solo un valor de encabezado de nonce de Content-Security-Policy por solicitud. (Pull Request)

  • Agregar un módulo específicamente para la configuración predeterminada de encabezados de Rails que se puede incluir explícitamente en los controladores. (Pull Request)

  • Agregar #dig a ActionDispatch::Request::Session. (Pull Request)

6 Action View

Consulte el registro de cambios para obtener cambios detallados.

6.1 Eliminaciones

  • Eliminar el ayudante image_alt obsoleto. (Commit)

  • Eliminar un módulo vacío RecordTagHelper del cual la funcionalidad ya se ha movido a la gema record_tag_helper. (Commit)

6.2 Obsolescencias

  • Obsoleto ActionView::Template.finalize_compiled_template_methods sin reemplazo. (Pull Request)

  • Obsoleto config.action_view.finalize_compiled_template_methods sin reemplazo. (Pull Request)

  • Obsoleto llamar a métodos de modelo privados desde el ayudante de vista options_from_collection_for_select. (Pull Request)

6.3 Cambios destacados

  • Limpiar la caché de Action View solo en desarrollo cuando hay cambios en los archivos, acelerando el modo de desarrollo. (Pull Request)

  • Mover todos los paquetes npm de Rails a un alcance @rails. (Pull Request)

  • Aceptar solo formatos de tipos MIME registrados. (Pull Request, Pull Request)

  • Agregar asignaciones a la plantilla y renderizado parcial en la salida del servidor. (Pull Request)

  • Agregar una opción year_format a la etiqueta date_select, lo que permite personalizar los nombres de los años. (Pull Request)

  • Agregar una opción nonce: true para el ayudante javascript_include_tag para admitir la generación automática de nonce para una Política de Seguridad de Contenido. (Pull Request)

  • Agregar una configuración action_view.finalize_compiled_template_methods para deshabilitar o habilitar los finalizadores de ActionView::Template. (Pull Request)

  • Extraer la llamada JavaScript confirm a su propio método sobrescribible en rails_ujs. (Pull Request)

  • Agregar una opción de configuración action_controller.default_enforce_utf8 para manejar la codificación UTF-8. Esto es false por defecto. (Pull Request)

  • Agregar soporte para el estilo de clave I18n en las etiquetas de envío de locales. (Pull Request)

7 Action Mailer

Consulte el registro de cambios para obtener cambios detallados.

7.1 Eliminaciones

7.2 Obsolescencias

  • Obsoleto ActionMailer::Base.receive a favor de Action Mailbox. (Commit)

  • Obsoleto DeliveryJob y Parameterized::DeliveryJob a favor de MailDeliveryJob. (Pull Request)

7.3 Cambios destacados

  • Agregar MailDeliveryJob para enviar correos regulares y parametrizados. (Pull Request)

  • Permitir que los trabajos de entrega de correo personalizados funcionen con las afirmaciones de prueba de Action Mailer. (Pull Request)

  • Permitir especificar un nombre de plantilla para correos multipartes con bloques en lugar de solo usar el nombre de la acción. (Pull Request)

  • Agregar perform_deliveries a la carga útil de la notificación deliver.action_mailer. (Pull Request)

  • Mejorar el mensaje de registro cuando perform_deliveries es falso para indicar que se omitió el envío de correos electrónicos. (Pull Request)

  • Permitir llamar a assert_enqueued_email_with sin bloque. (Pull Request)

  • Realizar los trabajos de entrega de correo en cola en el bloque assert_emails. (Pull Request)

  • Permitir que ActionMailer::Base anule los observadores e interceptores. (Pull Request)

8 Active Record

Consulte el registro de cambios para obtener cambios detallados.

8.1 Eliminaciones

  • Eliminar #set_state obsoleto del objeto de transacción. (Commit)

  • Eliminar #supports_statement_cache? obsoleto de los adaptadores de base de datos. (Commit)

  • Eliminar #insert_fixtures obsoleto de los adaptadores de base de datos. (Commit)

  • Eliminar ActiveRecord::ConnectionAdapters::SQLite3Adapter#valid_alter_table_type? obsoleto. (Commit)

  • Eliminar el soporte para pasar el nombre de la columna a sum cuando se pasa un bloque. (Commit)

  • Eliminar el soporte para pasar el nombre de la columna a count cuando se pasa un bloque. (Commit)

  • Eliminar el soporte para la delegación de métodos faltantes en una relación a Arel. (Commit)

  • Eliminar el soporte para la delegación de métodos faltantes en una relación a métodos privados de la clase. (Commit)

  • Eliminar el soporte para especificar un nombre de marca de tiempo para #cache_key. (Commit)

  • Eliminar ActiveRecord::Migrator.migrations_path=. (Commit)

  • Eliminar expand_hash_conditions_for_aggregates obsoleto. (Commit)

8.2 Obsolescencias

  • Obsoleto el uso de comparaciones de colación de sensibilidad de mayúsculas y minúsculas para el validador de unicidad. (Commit)

  • Obsoleto el uso de métodos de consulta a nivel de clase si el alcance del receptor se ha filtrado. (Pull Request)

  • Obsoleto config.active_record.sqlite3.represent_boolean_as_integer. (Commit)

  • Obsoleto pasar migrations_paths a connection.assume_migrated_upto_version. (Commit)

  • Obsoleto ActiveRecord::Result#to_hash en favor de ActiveRecord::Result#to_a. (Commit)

  • Obsoletos los métodos en DatabaseLimits: column_name_length, table_name_length, columns_per_table, indexes_per_table, columns_per_multicolumn_index, sql_query_length y joins_per_query. (Commit)

  • Obsoleto update_attributes/! en favor de update/!. (Commit)

8.3 Cambios destacados

  • Aumentar la versión mínima de la gema sqlite3 a 1.4. (Pull Request)

  • Agregar rails db:prepare para crear una base de datos si no existe y ejecutar sus migraciones. (Pull Request)

  • Agregar el callback after_save_commit como atajo para after_commit :hook, on: [ :create, :update ]. (Pull Request)

  • Agregar ActiveRecord::Relation#extract_associated para extraer registros asociados de una relación. (Pull Request)

  • Agregar ActiveRecord::Relation#annotate para agregar comentarios SQL a las consultas de ActiveRecord::Relation. (Pull Request)

  • Agregar soporte para establecer Optimizer Hints en bases de datos. (Pull Request)

  • Agregar métodos insert_all/insert_all!/upsert_all para realizar inserciones masivas. (Pull Request)

  • Agregar rails db:seed:replant que trunca las tablas de cada base de datos para el entorno actual y carga las semillas. (Pull Request)

  • Agregar reselect como método abreviado para unscope(:select).select(fields). (Pull Request)

  • Agregar ámbitos negativos para todos los valores de enumeración. (Pull Request)

  • Agregar #destroy_by y #delete_by para eliminaciones condicionales. (Pull Request)

  • Agregar la capacidad de cambiar automáticamente las conexiones de la base de datos. (Pull Request)

  • Agregar la capacidad de evitar escrituras en una base de datos durante la duración de un bloque. (Pull Request)

  • Agregar una API para cambiar conexiones y admitir múltiples bases de datos. (Pull Request)

  • Hacer que las marcas de tiempo con precisión sean la opción predeterminada para las migraciones. (Pull Request)

  • Admitir la opción :size para cambiar el tamaño de texto y blob en MySQL. (Pull Request)

  • Establecer tanto la clave externa como las columnas de tipo externo en NULL para asociaciones polimórficas con estrategia dependent: :nullify. (Pull Request)

  • Permitir que una instancia permitida de ActionController::Parameters se pase como argumento a ActiveRecord::Relation#exists?. (Pull Request)

  • Agregar soporte en #where para rangos infinitos introducidos en Ruby 2.6. (Pull Request)

  • Hacer que ROW_FORMAT=DYNAMIC sea una opción de creación de tabla predeterminada para MySQL. (Pull Request)

  • Agregar la capacidad de desactivar los ámbitos generados por ActiveRecord.enum. (Pull Request)

  • Hacer que el orden implícito sea configurable para una columna. (Pull Request)

  • Aumentar la versión mínima de PostgreSQL a 9.3, eliminando el soporte para 9.1 y 9.2. (Pull Request)

  • Hacer que los valores de una enumeración sean congelados, generando un error al intentar modificarlos. (Pull Request)

  • Hacer que el SQL de los errores ActiveRecord::StatementInvalid sea su propia propiedad de error e incluir los enlaces SQL como una propiedad de error separada. (Pull Request)

  • Agregar una opción :if_not_exists a create_table. (Pull Request)

  • Agregar soporte para múltiples bases de datos a rails db:schema:cache:dump y rails db:schema:cache:clear. (Pull Request)

  • Agregar soporte para configuraciones de hash y URL en el hash de base de datos de ActiveRecord::Base.connected_to. (Pull Request)

  • Agregar soporte para expresiones predeterminadas e índices de expresiones para MySQL. (Pull Request)

  • Agregar una opción index para los ayudantes de migración change_table. (Pull Request)

  • Corregir la reversión de transaction para migraciones. Anteriormente, los comandos dentro de una transaction en una migración revertida se ejecutaban sin invertir. Este cambio soluciona eso. (Pull Request)

  • Permitir que ActiveRecord::Base.configurations= se establezca con un hash simbolizado. (Pull Request)

  • Corregir la actualización de la caché del contador solo si el registro se guarda realmente. (Pull Request)

  • Agregar soporte de índices de expresión para el adaptador SQLite. (Pull Request)

  • Permitir que las subclases redefinan los callbacks de autosave para los registros asociados. (Pull Request)

  • Aumentar la versión mínima de MySQL a 5.5.8. (Pull Request)

  • Usar el conjunto de caracteres utf8mb4 de forma predeterminada en MySQL. (Pull Request)

  • Agregar la capacidad de filtrar datos sensibles en #inspect. (Pull Request, Pull Request)

  • Cambiar ActiveRecord::Base.configurations para devolver un objeto en lugar de un hash. (Pull Request)

  • Agregar configuración de base de datos para deshabilitar bloqueos de asesoramiento. (Pull Request)

  • Actualizar el método alter_table del adaptador SQLite3 para restaurar las claves externas. (Pull Request)

  • Permitir que la opción :to_table de remove_foreign_key sea invertible. (Pull Request)

  • Corregir el valor predeterminado para los tipos de tiempo de MySQL con precisión especificada. (Pull Request)

  • Corregir la opción touch para comportarse de manera consistente con el método Persistence#touch. (Pull Request)

  • Generar una excepción para definiciones de columna duplicadas en Migrations. (Pull Request)

  • Aumentar la versión mínima de SQLite a 3.8. (Pull Request)

  • Corregir que los registros principales no se guarden con registros secundarios duplicados. (Pull Request)

  • Asegurar que Associations::CollectionAssociation#size y Associations::CollectionAssociation#empty? usen los ids de asociación cargados si están presentes. (Pull Request)

  • Agregar soporte para precargar asociaciones de asociaciones polimórficas cuando no todos los registros tienen las asociaciones solicitadas. (Commit)

  • Agregar el método touch_all a ActiveRecord::Relation. (Pull Request)

  • Agregar el predicado ActiveRecord::Base.base_class?. (Pull Request)

  • Agregar opciones de prefijo/sufijo personalizadas a ActiveRecord::Store.store_accessor. (Pull Request)

  • Agregar ActiveRecord::Base.create_or_find_by/! para manejar la condición de carrera SELECT/INSERT en ActiveRecord::Base.find_or_create_by/! aprovechando las restricciones únicas en la base de datos. (Pull Request)

  • Agregar Relation#pick como atajo para obtener un solo valor. (Pull Request)

9 Active Storage

Consulte el Changelog para obtener cambios detallados.

9.1 Eliminaciones

9.2 Deprecaciones

  • Deprecar config.active_storage.queue a favor de config.active_storage.queues.analysis y config.active_storage.queues.purge. (Pull Request)

  • Deprecar ActiveStorage::Downloading a favor de ActiveStorage::Blob#open. (Commit)

  • Deprecar el uso de mini_magick directamente para generar variantes de imágenes a favor de image_processing. (Commit)

  • Deprecar :combine_options en el transformador de ImageProcessing de Active Storage sin reemplazo. (Commit)

9.3 Cambios destacados

  • Agregar soporte para generar variantes de imágenes BMP. (Pull Request)

  • Agregar soporte para generar variantes de imágenes TIFF. (Pull Request)

  • Agregar soporte para generar variantes de imágenes JPEG progresivas. (Pull Request)

  • Agregar ActiveStorage.routes_prefix para configurar las rutas generadas por Active Storage. (Pull Request)

  • Generar una respuesta 404 Not Found en ActiveStorage::DiskController#show cuando el archivo solicitado falta en el servicio de disco. (Pull Request)

  • Lanzar ActiveStorage::FileNotFoundError cuando falta el archivo solicitado para ActiveStorage::Blob#download y ActiveStorage::Blob#open. (Pull Request)

  • Agregar una clase genérica ActiveStorage::Error de la cual heredan las excepciones de Active Storage. (Commit)

  • Persistir los archivos cargados asignados a un registro en el almacenamiento cuando el registro se guarda en lugar de hacerlo inmediatamente. (Pull Request)

  • Opcionalmente reemplazar archivos existentes en lugar de agregar nuevos al asignar a una colección de adjuntos (como en @user.update!(images: [ … ])). Usar config.active_storage.replace_on_assign_to_many para controlar este comportamiento. (Pull Request, Pull Request)

  • Agregar la capacidad de reflejar los adjuntos definidos utilizando el mecanismo de reflexión existente de Active Record. (Pull Request)

  • Agregar ActiveStorage::Blob#open, que descarga un blob a un tempfile en disco y devuelve el tempfile. (Commit)

  • Soporte para descargas en streaming desde Google Cloud Storage. Requiere la versión 1.11+ de la gema google-cloud-storage. (Pull Request)

  • Usar la gema image_processing para las variantes de Active Storage. Esto reemplaza el uso de mini_magick directamente. (Pull Request)

10 Active Model

Consulte el Changelog para obtener cambios detallados.

10.1 Eliminaciones

10.2 Deprecaciones

10.3 Cambios destacados

  • Agregar una opción de configuración para personalizar el formato de ActiveModel::Errors#full_message. (Pull Request)

  • Agregar soporte para configurar el nombre del atributo para has_secure_password. (Pull Request)

  • Agregar el método #slice! a ActiveModel::Errors. (Pull Request)

  • Agregar ActiveModel::Errors#of_kind? para verificar la presencia de un error específico. (Pull Request)

  • Corregir el método ActiveModel::Serializers::JSON#as_json para los timestamps. (Pull Request)

  • Corregir el validador de numericality para seguir utilizando el valor antes de la conversión de tipo, excepto en Active Record. (Pull Request)

  • Corregir la validación de igualdad de numericality de BigDecimal y Float al convertir a BigDecimal en ambos extremos de la validación. (Pull Request)

  • Corregir el valor del año al convertir un hash de tiempo multiparamétrico. (Pull Request)

  • Convertir los símbolos booleanos falsos en un atributo booleano como falso. (Pull Request)

  • Devolver la fecha correcta al convertir parámetros en value_from_multiparameter_assignment para ActiveModel::Type::Date. (Pull Request)

  • Retroceder al idioma principal antes de retroceder al espacio de nombres :errors al buscar las traducciones de errores. (Pull Request)

11 Active Support

Consulte el Changelog para obtener cambios detallados.

11.1 Eliminaciones

  • Eliminar el método deprecado #acronym_regex de Inflections. (Commit)

  • Eliminar el método deprecado Module#reachable?. (Commit)

  • Eliminar Kernel#` sin reemplazo. (Pull Request)

11.2 Deprecaciones

  • Deprecar el uso de argumentos enteros negativos para String#first y String#last. (Pull Request)

  • Deprecar ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase en favor de String#downcase/upcase/swapcase. (Pull Request)

  • Deprecar ActiveSupport::Multibyte::Unicode#normalize y ActiveSupport::Multibyte::Chars#normalize en favor de String#unicode_normalize. (Pull Request)

  • Deprecar ActiveSupport::Multibyte::Chars.consumes? en favor de String#is_utf8?. (Pull Request)

  • Deprecar ActiveSupport::Multibyte::Unicode#pack_graphemes(array) y ActiveSupport::Multibyte::Unicode#unpack_graphemes(string) en favor de array.flatten.pack("U*") y string.scan(/\X/).map(&:codepoints), respectivamente. (Pull Request)

11.3 Cambios destacados

  • Agregar soporte para pruebas en paralelo. (Pull Request)

  • Asegurarse de que String#strip_heredoc preserve la congelación de las cadenas. (Pull Request)

  • Agregar String#truncate_bytes para truncar una cadena a un tamaño máximo en bytes sin romper caracteres multibyte o grupos de grafemas. (Pull Request)

  • Agregar la opción private al método delegate para delegar a métodos privados. Esta opción acepta true/false como valor. (Pull Request)

  • Agregar soporte para traducciones a través de I18n para ActiveSupport::Inflector#ordinal y ActiveSupport::Inflector#ordinalize. (Pull Request)

  • Agregar los métodos before? y after? a Date, DateTime, Time y TimeWithZone. (Pull Request)

  • Corregir el error donde URI.unescape fallaría con una entrada de caracteres mixtos Unicode/escapados. (Pull Request)

  • Corregir el error donde ActiveSupport::Cache inflaría masivamente el tamaño de almacenamiento cuando la compresión estaba habilitada. (Pull Request)

  • Almacenamiento en caché de Redis: delete_matched ya no bloquea el servidor de Redis. (Pull Request)

  • Corregir el error donde ActiveSupport::TimeZone.all fallaría cuando faltara datos de tzinfo para cualquier zona horaria definida en ActiveSupport::TimeZone::MAPPING. (Pull Request)

  • Agregar Enumerable#index_with, que permite crear un hash a partir de un enumerable con el valor de un bloque pasado o un argumento predeterminado. (Pull Request)

  • Permitir que los métodos Range#=== y Range#cover? funcionen con un argumento de tipo Range. (Pull Request)

  • Soporte para la expiración de claves en las operaciones increment/decrement de RedisCacheStore. (Pull Request)

  • Agregar características de tiempo de CPU, tiempo de inactividad y asignaciones a los eventos del suscriptor de registro. (Pull Request)

  • Agregar soporte para objetos de evento al sistema de notificación de Active Support. (Pull Request)

  • Agregar soporte para no almacenar en caché entradas nil mediante la introducción de la nueva opción skip_nil para ActiveSupport::Cache#fetch. (Pull Request)

  • Agregar el método Array#extract! que elimina y devuelve los elementos para los cuales el bloque devuelve un valor verdadero. (Pull Request)

  • Mantener una cadena segura para HTML después de cortarla. (Pull Request)

  • Agregar soporte para rastrear la carga automática constante a través del registro. (Commit)

  • Definir unfreeze_time como un alias de travel_back. (Pull Request)

  • Cambiar ActiveSupport::TaggedLogging.new para devolver una nueva instancia de registro en lugar de modificar la recibida como argumento. (Pull Request)

  • Tratar los métodos #delete_prefix, #delete_suffix y #unicode_normalize como métodos no seguros para HTML. (Pull Request)

  • Corregir el error donde #without para ActiveSupport::HashWithIndifferentAccess fallaría con argumentos de símbolo. (Pull Request)

  • Renombrar Module#parent, Module#parents y Module#parent_name a module_parent, module_parents y module_parent_name. (Pull Request)

  • Agregar ActiveSupport::ParameterFilter. (Pull Request)

  • Corregir el problema donde la duración se redondeaba a un segundo completo cuando se agregaba un número decimal a la duración. (Pull Request)

  • Hacer que #to_options sea un alias de #symbolize_keys en ActiveSupport::HashWithIndifferentAccess. (Pull Request)

  • Ya no generar una excepción si el mismo bloque se incluye varias veces en un Concern. (Pull Request)

  • Preservar el orden de las claves pasadas a ActiveSupport::CacheStore#fetch_multi. (Pull Request)

  • Corregir String#safe_constantize para que no lance un LoadError para referencias constantes escritas incorrectamente. (Pull Request)

  • Agregar Hash#deep_transform_values y Hash#deep_transform_values!. (Commit)

  • Agregar ActiveSupport::HashWithIndifferentAccess#assoc. (Pull Request)

  • Agregar el callback before_reset a CurrentAttributes y definir after_reset como un alias de resets para mayor simetría. (Pull Request)

  • Revisar ActiveSupport::Notifications.unsubscribe para manejar correctamente suscriptores de expresiones regulares u otros patrones múltiples. (Pull Request)

  • Agregar un nuevo mecanismo de carga automática utilizando Zeitwerk. (Commit)

  • Agregar Array#including y Enumerable#including para ampliar convenientemente una colección. (Commit)

  • Renombrar Array#without y Enumerable#without a Array#excluding y Enumerable#excluding. Los nombres antiguos de los métodos se mantienen como alias. (Commit)

  • Agregar soporte para suministrar locale a transliterate y parameterize. (Pull Request)

  • Corregir Time#advance para que funcione con fechas anteriores a 1001-03-07. (Pull Request)

  • Actualizar ActiveSupport::Notifications::Instrumenter#instrument para permitir no pasar un bloque. (Pull Request)

  • Usar referencias débiles en el rastreador de descendientes para permitir que las subclases anónimas sean recolectadas por el recolector de basura. (Pull Request)

  • Llamar a los métodos de prueba con el método with_info_handler para permitir que el complemento minitest-hooks funcione. (Commit)

  • Preservar el estado de html_safe? en ActiveSupport::SafeBuffer#*. (Pull Request)

12 Active Job

Consulte el registro de cambios para obtener cambios detallados.

12.1 Eliminaciones

12.2 Deprecaciones

12.3 Cambios destacados

  • Agregar soporte para serializadores personalizados para los argumentos de Active Job. (Pull Request)

  • Agregar soporte para ejecutar trabajos activos en la zona horaria en la que se encolaron. (Pull Request)

  • Permitir pasar múltiples excepciones a retry_on/discard_on. (Commit)

  • Permitir llamar a assert_enqueued_with y assert_enqueued_email_with sin un bloque. (Pull Request)

  • Envolver las notificaciones de enqueue y enqueue_at en el callback around_enqueue en lugar del callback after_enqueue. (Pull Request)

  • Permitir llamar a perform_enqueued_jobs sin un bloque. (Pull Request)

  • Permitir llamar a assert_performed_with sin un bloque. (Pull Request)

  • Agregar la opción :queue a las aserciones y ayudantes de trabajos. (Pull Request)

  • Agregar ganchos a Active Job alrededor de reintentos y descartes. (Pull Request)

  • Agregar una forma de probar un subconjunto de argumentos al realizar trabajos. (Pull Request)

  • Incluir argumentos deserializados en los trabajos devueltos por los ayudantes de prueba de Active Job. (Pull Request)

  • Permitir que los ayudantes de aserción de Active Job acepten un Proc para la palabra clave only. (Pull Request)

  • Eliminar microsegundos y nanosegundos de los argumentos del trabajo en los ayudantes de aserción. (Pull Request)

13 Guías de Ruby on Rails

Consulte el Registro de cambios para obtener cambios detallados.

13.1 Cambios destacados

  • Agregar guía de Múltiples bases de datos con Active Record. (Pull Request)

  • Agregar una sección sobre solución de problemas de carga automática de constantes. (Commit)

  • Agregar guía básica de Action Mailbox. (Pull Request)

  • Agregar descripción general de Action Text. (Pull Request)

14 Créditos

Consulte la lista completa de colaboradores de Rails para ver 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.