edge
Mais em rubyonrails.org: Mais Ruby on Rails

Notas de lançamento do Ruby on Rails 6.0

Destaques do Rails 6.0:

Estas notas de lançamento cobrem apenas as principais mudanças. Para saber sobre várias correções de bugs e mudanças, consulte os registros de alterações ou confira a lista de commits no repositório principal do Rails no GitHub.

1 Atualizando para o Rails 6.0

Se você está atualizando um aplicativo existente, é uma ótima ideia ter uma boa cobertura de testes antes de começar. Você também deve primeiro atualizar para o Rails 5.2, caso ainda não o tenha feito, e garantir que seu aplicativo ainda funcione como esperado antes de tentar atualizar para o Rails 6.0. Uma lista de coisas a serem observadas ao atualizar está disponível no guia Atualizando o Ruby on Rails.

2 Recursos Principais

2.1 Action Mailbox

Pull Request

Action Mailbox permite que você encaminhe e-mails recebidos para caixas de correio semelhantes a controladores. Você pode ler mais sobre o Action Mailbox no guia Noções básicas do Action Mailbox.

2.2 Action Text

Pull Request

Action Text traz conteúdo de texto rico e edição para o Rails. Ele inclui o editor Trix que lida com tudo, desde formatação até links, citações, listas, imagens incorporadas e galerias. O conteúdo de texto rico gerado pelo editor Trix é salvo em seu próprio modelo RichText, que está associado a qualquer modelo Active Record existente no aplicativo. Quaisquer imagens incorporadas (ou outros anexos) são armazenadas automaticamente usando o Active Storage e associadas ao modelo RichText incluído.

Você pode ler mais sobre o Action Text no guia Visão geral do Action Text.

2.3 Testes Paralelos

Pull Request

Testes Paralelos permitem que você paralelize seu conjunto de testes. Embora a criação de processos seja o método padrão, a criação de threads também é suportada. Executar testes em paralelo reduz o tempo necessário para executar todo o conjunto de testes.

2.4 Testes do Action Cable

Pull Request

Ferramentas de teste do Action Cable permitem que você teste sua funcionalidade do Action Cable em qualquer nível: conexões, canais, transmissões.

3 Railties

Consulte o Changelog para obter informações detalhadas sobre as alterações.

3.1 Remoções

  • Remover o auxiliar after_bundle obsoleto dentro dos modelos de plugins. (Commit)

  • Remover o suporte obsoleto ao config.ru que usa a classe do aplicativo como argumento de run. (Commit)

  • Remover o argumento obsoleto environment dos comandos do Rails. (Commit)

  • Remover o método obsoleto capify! nos geradores e modelos. (Commit)

  • Remover o config.secret_token obsoleto. (Commit)

3.2 Obsolescências

  • Obsoleto passar o nome do servidor Rack como um argumento regular para rails server. (Pull Request)

  • Obsoleto o suporte ao uso do ambiente HOST para especificar o IP do servidor. (Pull Request)

  • Obsoleto acessar hashes retornados por config_for por chaves não simbólicas. (Pull Request)

3.3 Mudanças notáveis

  • Adicionar uma opção explícita --using ou -u para especificar o servidor para o comando rails server. (Pull Request)

  • Adicionar a capacidade de ver a saída de rails routes no formato expandido. (Pull Request)

  • Executar a tarefa de seed do banco de dados usando o adaptador Active Job inline. (Pull Request)

  • Adicionar um comando rails db:system:change para alterar o banco de dados do aplicativo. (Pull Request)

  • Adicionar o comando rails test:channels para testar apenas os canais do Action Cable. (Pull Request)

  • Introduzir proteção contra ataques de rebinding DNS. (Pull Request)

  • Adicionar capacidade de abortar em caso de falha ao executar comandos do gerador. (Pull Request)

  • Tornar o Webpacker o compilador JavaScript padrão para o Rails 6. (Pull Request)

  • Adicionar suporte a múltiplos bancos de dados para o comando rails db:migrate:status. (Pull Request)

  • Adicionar capacidade de usar caminhos de migração diferentes de múltiplos bancos de dados nos geradores. (Pull Request)

  • Adicionar suporte para credenciais de vários ambientes. (Pull Request)

  • Tornar null_store o armazenamento de cache padrão no ambiente de teste. (Pull Request)

4 Action Cable

Consulte o Changelog para obter alterações detalhadas.

4.1 Remoções

  • Substituir ActionCable.startDebugging() e ActionCable.stopDebugging() por ActionCable.logger.enabled. (Pull Request)

4.2 Depreciações

  • Não há depreciações para o Action Cable no Rails 6.0.

4.3 Mudanças notáveis

  • Adicionar suporte para a opção channel_prefix para adaptadores de assinatura do PostgreSQL em cable.yml. (Pull Request)

  • Permitir passar uma configuração personalizada para ActionCable::Server::Base. (Pull Request)

  • Adicionar ganchos de carregamento :action_cable_connection e :action_cable_channel. (Pull Request)

  • Adicionar Channel::Base#broadcast_to e Channel::Base.broadcasting_for. (Pull Request)

  • Fechar uma conexão ao chamar reject_unauthorized_connection de uma ActionCable::Connection. (Pull Request)

  • Converter o pacote JavaScript do Action Cable de CoffeeScript para ES2015 e publicar o código-fonte na distribuição npm. (Pull Request)

  • Mover a configuração do adaptador WebSocket e adaptador de log de propriedades de ActionCable para ActionCable.adapters. (Pull Request)

  • Adicionar uma opção id ao adaptador Redis para distinguir as conexões Redis do Action Cable. (Pull Request)

5 Action Pack

Consulte o Changelog para obter alterações detalhadas.

5.1 Remoções

  • Remover o auxiliar fragment_cache_key obsoleto em favor de combined_fragment_cache_key. (Commit)

  • Remover métodos obsoletos em ActionDispatch::TestResponse: #success? em favor de #successful?, #missing? em favor de #not_found?, #error? em favor de #server_error?. (Commit)

5.2 Depreciações

  • Depreciar ActionDispatch::Http::ParameterFilter em favor de ActiveSupport::ParameterFilter. (Pull Request)

  • Depreciar force_ssl no nível do controlador em favor de config.force_ssl. (Pull Request)

5.3 Mudanças notáveis

  • Alterar ActionDispatch::Response#content_type para retornar o cabeçalho Content-Type como está. (Pull Request)

  • Gerar um ArgumentError se um parâmetro de recurso contiver dois pontos. (Pull Request)

  • Permitir que ActionDispatch::SystemTestCase.driven_by seja chamado com um bloco para definir capacidades específicas do navegador. (Pull Request)

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

  • Permitir o uso de parsed_body em ActionController::TestCase. (Pull Request)

  • Gerar um ArgumentError quando várias rotas raiz existirem no mesmo contexto sem especificações de nomeação as:. (Pull Request)

  • Permitir o uso de #rescue_from para lidar com erros de análise de parâmetros. (Pull Request)

  • Adicionar ActionController::Parameters#each_value para iterar pelos parâmetros. (Pull Request)

  • Codificar os nomes de arquivo do Content-Disposition em send_data e send_file. (Pull Request)

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

  • Adicionar metadados de propósito e expiração dentro de cookies assinados/criptografados para evitar a cópia do valor de cookies em outros cookies. (Pull Request)

  • Gerar ActionController::RespondToMismatchError para invocações conflitantes de respond_to. (Pull Request)

  • Adicionar uma página de erro explícita quando um modelo está ausente para um formato de solicitação. (Pull Request)

  • Introduzir ActionDispatch::DebugExceptions.register_interceptor, uma maneira de se conectar a DebugExceptions e processar a exceção antes de ser renderizada. (Pull Request)

  • Saida apenas um valor de cabeçalho Content-Security-Policy nonce por solicitação. (Pull Request)

  • Adicionar um módulo especificamente para a configuração padrão de cabeçalhos do Rails que pode ser incluído explicitamente em controladores. (Pull Request)

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

6 Action View

Consulte o Changelog para obter detalhes das alterações.

6.1 Remoções

  • Remova o auxiliar image_alt obsoleto. (Commit)

  • Remova um módulo vazio RecordTagHelper do qual a funcionalidade já foi movida para a gem record_tag_helper. (Commit)

6.2 Depreciações

  • Deprecie ActionView::Template.finalize_compiled_template_methods sem substituição. (Pull Request)

  • Deprecie config.action_view.finalize_compiled_template_methods sem substituição. (Pull Request)

  • Deprecie a chamada de métodos privados do modelo do auxiliar de visualização options_from_collection_for_select. (Pull Request)

6.3 Mudanças notáveis

  • Limpe o cache do Action View apenas em desenvolvimento quando houver alterações de arquivo, acelerando o modo de desenvolvimento. (Pull Request)

  • Mova todos os pacotes npm do Rails para um escopo @rails. (Pull Request)

  • Aceite apenas formatos de tipos MIME registrados. (Pull Request, Pull Request)

  • Adicione alocações à saída do servidor para renderização de templates e parciais. (Pull Request)

  • Adicione a opção year_format à tag date_select, tornando possível personalizar os nomes dos anos. (Pull Request)

  • Adicione a opção nonce: true para o auxiliar javascript_include_tag para suportar a geração automática de nonce para uma Política de Segurança de Conteúdo. (Pull Request)

  • Adicione a configuração action_view.finalize_compiled_template_methods para desabilitar ou habilitar os finalizadores de ActionView::Template. (Pull Request)

  • Extraia a chamada JavaScript confirm para seu próprio método substituível em rails_ujs. (Pull Request)

  • Adicione a opção de configuração action_controller.default_enforce_utf8 para lidar com a aplicação da codificação UTF-8. O valor padrão é false. (Pull Request)

  • Adicione suporte ao estilo de chave I18n para chaves de localização em tags de envio. (Pull Request)

7 Action Mailer

Consulte o Changelog para obter detalhes das alterações.

7.1 Remoções

7.2 Depreciações

  • Deprecie ActionMailer::Base.receive em favor do Action Mailbox. (Commit)

  • Deprecie DeliveryJob e Parameterized::DeliveryJob em favor de MailDeliveryJob. (Pull Request)

7.3 Mudanças notáveis

  • Adicione MailDeliveryJob para enviar emails regulares e parametrizados. (Pull Request)

  • Permita que trabalhos de entrega de email personalizados funcionem com as asserções de teste do Action Mailer. (Pull Request)

  • Permita especificar um nome de template para emails multipartes com blocos em vez de usar apenas o nome da ação. (Pull Request)

  • Adicione perform_deliveries à carga útil da notificação deliver.action_mailer. (Pull Request)

  • Melhore a mensagem de log quando perform_deliveries é falso para indicar que o envio de emails foi pulado. (Pull Request)

  • Permita chamar assert_enqueued_email_with sem bloco. (Pull Request)

  • Execute os trabalhos de entrega de email enfileirados no bloco assert_emails. (Pull Request)

  • Permita que ActionMailer::Base cancele o registro de observadores e interceptadores. (Pull Request)

8 Active Record

Consulte o Changelog para obter detalhes das alterações.

8.1 Remoções

  • Remova #set_state obsoleto do objeto de transação. (Commit)

  • Remova #supports_statement_cache? obsoleto dos adaptadores de banco de dados. (Commit)

  • Remova #insert_fixtures obsoleto dos adaptadores de banco de dados. (Commit)

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

  • Remova o suporte para passar o nome da coluna para sum quando um bloco é passado. (Commit)

  • Remova o suporte para passar o nome da coluna para count quando um bloco é passado. (Commit)

  • Remova o suporte para delegação de métodos ausentes em uma relação para Arel. (Commit)

  • Remova o suporte para delegar métodos ausentes em uma relação para métodos privados da classe. (Commit)

  • Remova o suporte para especificar um nome de timestamp para #cache_key. (Commit)

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

  • Remova o método expand_hash_conditions_for_aggregates obsoleto. (Commit)

8.2 Depreciações

  • Depreciar comparações de colações com sensibilidade a maiúsculas e minúsculas para validação de unicidade. (Commit)

  • Depreciar o uso de métodos de consulta em nível de classe se o escopo do receptor tiver vazado. (Pull Request)

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

  • Depreciar a passagem de migrations_paths para connection.assume_migrated_upto_version. (Commit)

  • Depreciar ActiveRecord::Result#to_hash em favor de ActiveRecord::Result#to_a. (Commit)

  • Depreciar métodos em DatabaseLimits: column_name_length, table_name_length, columns_per_table, indexes_per_table, columns_per_multicolumn_index, sql_query_length e joins_per_query. (Commit)

  • Depreciar update_attributes/! em favor de update/!. (Commit)

8.3 Mudanças notáveis

  • Aumente a versão mínima da gema sqlite3 para 1.4. (Pull Request)

  • Adicione rails db:prepare para criar um banco de dados se ele não existir e executar suas migrações. (Pull Request)

  • Adicione o callback after_save_commit como atalho para after_commit :hook, on: [ :create, :update ]. (Pull Request)

  • Adicione ActiveRecord::Relation#extract_associated para extrair registros associados de uma relação. (Pull Request)

  • Adicione ActiveRecord::Relation#annotate para adicionar comentários SQL às consultas de ActiveRecord::Relation. (Pull Request)

  • Adicione suporte para definir Dicas de Otimização em bancos de dados. (Pull Request)

  • Adicione os métodos insert_all/insert_all!/upsert_all para fazer inserções em massa. (Pull Request)

  • Adicione rails db:seed:replant que trunca as tabelas de cada banco de dados para o ambiente atual e carrega as sementes. (Pull Request)

  • Adicione o método reselect, que é uma forma abreviada de unscope(:select).select(fields). (Pull Request)

  • Adicione escopos negativos para todos os valores de enumeração. (Pull Request)

  • Adicione #destroy_by e #delete_by para remoções condicionais. (Pull Request)

  • Adicione a capacidade de alternar automaticamente as conexões do banco de dados. (Pull Request)

  • Adicione a capacidade de impedir gravações em um banco de dados durante a execução de um bloco. (Pull Request)

  • Adicione uma API para alternar conexões para suportar vários bancos de dados. (Pull Request)

  • Torne os timestamps com precisão o padrão para migrações. (Pull Request)

  • Suporte à opção :size para alterar o tamanho de texto e blob no MySQL. (Pull Request)

  • Defina tanto a chave estrangeira quanto as colunas de tipo estrangeiro como NULL para associações polimórficas na estratégia dependent: :nullify. (Pull Request)

  • Permita que uma instância permitida de ActionController::Parameters seja passada como argumento para ActiveRecord::Relation#exists?. (Pull Request)

  • Adicione suporte em #where para faixas infinitas introduzidas no Ruby 2.6. (Pull Request)

  • Torne ROW_FORMAT=DYNAMIC uma opção padrão para criar tabela no MySQL. (Pull Request)

  • Adicione a capacidade de desabilitar escopos gerados por ActiveRecord.enum. (Pull Request)

  • Torne a ordenação implícita configurável para uma coluna. (Pull Request)

  • Aumente a versão mínima do PostgreSQL para 9.3, removendo o suporte para 9.1 e 9.2. (Pull Request)

  • Torne os valores de um enum congelados, gerando um erro ao tentar modificá-los. (Pull Request)

  • Torne o SQL dos erros ActiveRecord::StatementInvalid sua própria propriedade de erro e inclua os binds SQL como uma propriedade de erro separada. (Pull Request)

  • Adicione uma opção :if_not_exists para create_table. (Pull Request)

  • Adicione suporte para vários bancos de dados em rails db:schema:cache:dump e rails db:schema:cache:clear. (Pull Request)

  • Adicione suporte para configurações de hash e url no hash de banco de dados de ActiveRecord::Base.connected_to. (Pull Request)

  • Adicione suporte para expressões padrão e índices de expressão para o MySQL. (Pull Request)

  • Adicione uma opção index para os ajudantes de migração change_table. (Pull Request)

  • Corrija a reversão de transaction para migrações. Anteriormente, comandos dentro de uma transaction em uma migração revertida eram executados sem reverter. Essa mudança corrige isso. (Pull Request)

  • Permitir que ActiveRecord::Base.configurations= seja definido com um hash simbolizado. (Pull Request)

  • Corrigir o contador de cache para atualizar apenas se o registro for realmente salvo. (Pull Request)

  • Adicionar suporte a índices de expressão para o adaptador SQLite. (Pull Request)

  • Permitir que subclasses redefinam callbacks de autosave para registros associados. (Pull Request)

  • Aumentar a versão mínima do MySQL para 5.5.8. (Pull Request)

  • Usar o conjunto de caracteres utf8mb4 por padrão no MySQL. (Pull Request)

  • Adicionar a capacidade de filtrar dados sensíveis em #inspect (Pull Request, Pull Request)

  • Alterar ActiveRecord::Base.configurations para retornar um objeto em vez de um hash. (Pull Request)

  • Adicionar configuração de banco de dados para desabilitar travas de assessoria. (Pull Request)

  • Atualizar o método alter_table do adaptador SQLite3 para restaurar chaves estrangeiras. (Pull Request)

  • Permitir que a opção :to_table de remove_foreign_key seja invertível. (Pull Request)

  • Corrigir valor padrão para tipos de tempo do MySQL com precisão especificada. (Pull Request)

  • Corrigir a opção touch para se comportar de forma consistente com o método Persistence#touch. (Pull Request)

  • Lançar uma exceção para definições de coluna duplicadas em Migrations. (Pull Request)

  • Aumentar a versão mínima do SQLite para 3.8. (Pull Request)

  • Corrigir registros pai para não serem salvos com registros filhos duplicados. (Pull Request)

  • Garantir que Associations::CollectionAssociation#size e Associations::CollectionAssociation#empty? usem os ids da associação carregada, se presentes. (Pull Request)

  • Adicionar suporte para carregar associações de associações polimórficas quando nem todos os registros têm as associações solicitadas. (Commit)

  • Adicionar o método touch_all para ActiveRecord::Relation. (Pull Request)

  • Adicionar o predicado ActiveRecord::Base.base_class?. (Pull Request)

  • Adicionar opções de prefixo/sufixo personalizadas para ActiveRecord::Store.store_accessor. (Pull Request)

  • Adicionar ActiveRecord::Base.create_or_find_by/! para lidar com a condição de corrida SELECT/INSERT em ActiveRecord::Base.find_or_create_by/! usando restrições únicas no banco de dados. (Pull Request)

  • Adicionar Relation#pick como atalho para plucks de um único valor. (Pull Request)

9 Active Storage

Consulte o Changelog para obter detalhes das alterações.

9.1 Remoções

9.2 Depreciações

  • Depreciar config.active_storage.queue em favor de config.active_storage.queues.analysis e config.active_storage.queues.purge. (Pull Request)

  • Depreciar ActiveStorage::Downloading em favor de ActiveStorage::Blob#open. (Commit)

  • Depreciar o uso direto do mini_magick para gerar variantes de imagem em favor de image_processing. (Commit)

  • Depreciar :combine_options no transformador ImageProcessing do Active Storage sem substituição. (Commit)

9.3 Mudanças notáveis

  • Adicionar suporte para gerar variantes de imagem BMP. (Pull Request)

  • Adicionar suporte para gerar variantes de imagem TIFF. (Pull Request)

  • Adicionar suporte para gerar variantes de imagem JPEG progressivas. (Pull Request)

  • Adicionar ActiveStorage.routes_prefix para configurar as rotas geradas pelo Active Storage. (Pull Request)

  • Gerar uma resposta 404 Not Found em ActiveStorage::DiskController#show quando o arquivo solicitado estiver ausente no serviço de disco. (Pull Request)

  • Lançar ActiveStorage::FileNotFoundError quando o arquivo solicitado estiver ausente para ActiveStorage::Blob#download e ActiveStorage::Blob#open. (Pull Request)

  • Adicionar uma classe genérica ActiveStorage::Error da qual as exceções do Active Storage herdam. (Commit)

  • Persistir arquivos enviados atribuídos a um registro no armazenamento quando o registro for salvo, em vez de imediatamente. (Pull Request)

  • Opcionalmente substituir arquivos existentes em vez de adicioná-los ao atribuir a uma coleção de anexos (como em @user.update!(images: [ … ])). Use config.active_storage.replace_on_assign_to_many para controlar esse comportamento. (Pull Request, Pull Request)

  • Adicionar a capacidade de refletir sobre os anexos definidos usando o mecanismo de reflexão existente do Active Record. (Pull Request)

  • Adicione ActiveStorage::Blob#open, que faz o download de um blob para um tempfile no disco e retorna o tempfile. (Commit)

  • Suporte a downloads em streaming do Google Cloud Storage. Requer a versão 1.11+ da gem google-cloud-storage. (Pull Request)

  • Use a gem image_processing para variantes do Active Storage. Isso substitui o uso do mini_magick diretamente. (Pull Request)

10 Active Model

Consulte o Changelog para obter detalhes das alterações.

10.1 Remoções

10.2 Depreciações

10.3 Mudanças notáveis

  • Adicione uma opção de configuração para personalizar o formato do ActiveModel::Errors#full_message. (Pull Request)

  • Adicione suporte para configurar o nome do atributo para has_secure_password. (Pull Request)

  • Adicione o método #slice! para ActiveModel::Errors. (Pull Request)

  • Adicione ActiveModel::Errors#of_kind? para verificar a presença de um erro específico. (Pull Request)

  • Corrija o método ActiveModel::Serializers::JSON#as_json para timestamps. (Pull Request)

  • Corrija o validador de numericality para continuar usando o valor antes da conversão de tipo, exceto no Active Record. (Pull Request)

  • Corrija a validação de igualdade de numericality de BigDecimal e Float convertendo para BigDecimal em ambas as extremidades da validação. (Pull Request)

  • Corrija o valor do ano ao converter um hash de tempo multiparamétrico. (Pull Request)

  • Converta símbolos booleanos falsos em atributos booleanos como false. (Pull Request)

  • Retorne a data correta ao converter parâmetros em value_from_multiparameter_assignment para ActiveModel::Type::Date. (Pull Request)

  • Volte para o locale pai antes de voltar para o namespace :errors ao buscar traduções de erros. (Pull Request)

11 Active Support

Consulte o Changelog para obter detalhes das alterações.

11.1 Remoções

  • Remova o método #acronym_regex depreciado de Inflections. (Commit)

  • Remova o método Module#reachable? depreciado. (Commit)

  • Remova Kernel#` sem substituição. (Pull Request)

11.2 Depreciações

  • Deprecie o uso de argumentos inteiros negativos para String#first e String#last. (Pull Request)

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

  • Deprecie ActiveSupport::Multibyte::Unicode#normalize e ActiveSupport::Multibyte::Chars#normalize em favor de String#unicode_normalize. (Pull Request)

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

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

11.3 Mudanças notáveis

  • Adicione suporte para testes paralelos. (Pull Request)

  • Certifique-se de que String#strip_heredoc preserve a congelamento das strings. (Pull Request)

  • Adicione String#truncate_bytes para truncar uma string para um tamanho máximo em bytes sem quebrar caracteres multibyte ou agrupamentos de grafemas. (Pull Request)

  • Adicione a opção private para o método delegate para delegar a métodos privados. Essa opção aceita true/false como valor. (Pull Request)

  • Adicione suporte para traduções através do I18n para ActiveSupport::Inflector#ordinal e ActiveSupport::Inflector#ordinalize. (Pull Request)

  • Adicione os métodos before? e after? para Date, DateTime, Time e TimeWithZone. (Pull Request)

  • Corrija o bug em que URI.unescape falharia com entrada de caracteres Unicode/escapados misturados. (Pull Request)

  • Corrija o bug em que ActiveSupport::Cache inflaria massivamente o tamanho de armazenamento quando a compressão estava ativada. (Pull Request)

  • Redis cache store: delete_matched não bloqueia mais o servidor Redis. (Pull Request)

  • Corrija o bug em que ActiveSupport::TimeZone.all falharia quando os dados tzinfo para qualquer fuso horário definido em ActiveSupport::TimeZone::MAPPING estivessem faltando. (Pull Request)

  • Adicione Enumerable#index_with, que permite criar um hash a partir de um enumerável com o valor de um bloco passado ou um argumento padrão. (Pull Request)

  • Permita que os métodos Range#=== e Range#cover? funcionem com argumento do tipo Range. (Pull Request)

  • Adicionar suporte para expiração de chave nas operações increment/decrement do RedisCacheStore. (Pull Request)

  • Adicionar recursos de tempo de CPU, tempo ocioso e alocações aos eventos do log subscriber. (Pull Request)

  • Adicionar suporte para objeto de evento ao sistema de notificação do Active Support. (Pull Request)

  • Adicionar suporte para não armazenar em cache entradas nil introduzindo a nova opção skip_nil para ActiveSupport::Cache#fetch. (Pull Request)

  • Adicionar método Array#extract! que remove e retorna os elementos para os quais o bloco retorna um valor verdadeiro. (Pull Request)

  • Manter uma string HTML-segura como HTML-segura após a fatia. (Pull Request)

  • Adicionar suporte para rastrear autoloads constantes por meio de log. (Commit)

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

  • Alterar ActiveSupport::TaggedLogging.new para retornar uma nova instância de logger em vez de modificar a recebida como argumento. (Pull Request)

  • Tratar os métodos #delete_prefix, #delete_suffix e #unicode_normalize como métodos não seguros para HTML. (Pull Request)

  • Corrigir bug em que #without para ActiveSupport::HashWithIndifferentAccess falharia com argumentos de símbolo. (Pull Request)

  • Renomear Module#parent, Module#parents e Module#parent_name para module_parent, module_parents e module_parent_name. (Pull Request)

  • Adicionar ActiveSupport::ParameterFilter. (Pull Request)

  • Corrigir problema em que a duração estava sendo arredondada para um segundo inteiro quando um float era adicionado à duração. (Pull Request)

  • Fazer de #to_options um alias para #symbolize_keys em ActiveSupport::HashWithIndifferentAccess. (Pull Request)

  • Não lançar mais uma exceção se o mesmo bloco for incluído várias vezes para um Concern. (Pull Request)

  • Preservar a ordem das chaves passadas para ActiveSupport::CacheStore#fetch_multi. (Pull Request)

  • Corrigir String#safe_constantize para não lançar um LoadError para referências de constantes com caixa incorreta. (Pull Request)

  • Adicionar Hash#deep_transform_values e Hash#deep_transform_values!. (Commit)

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

  • Adicionar callback before_reset para CurrentAttributes e definir after_reset como um alias de resets para simetria. (Pull Request)

  • Revisar ActiveSupport::Notifications.unsubscribe para lidar corretamente com assinantes de várias expressões regulares ou outros padrões múltiplos. (Pull Request)

  • Adicionar novo mecanismo de carregamento automático usando o Zeitwerk. (Commit)

  • Adicionar Array#including e Enumerable#including para aumentar convenientemente uma coleção. (Commit)

  • Renomear Array#without e Enumerable#without para Array#excluding e Enumerable#excluding. Os antigos nomes dos métodos são mantidos como aliases. (Commit)

  • Adicionar suporte para fornecer locale para transliterate e parameterize. (Pull Request)

  • Corrigir Time#advance para funcionar com datas anteriores a 1001-03-07. (Pull Request)

  • Atualizar ActiveSupport::Notifications::Instrumenter#instrument para permitir não passar um bloco. (Pull Request)

  • Usar referências fracas no rastreador de descendentes para permitir que subclasses anônimas sejam coletadas pelo coletor de lixo. (Pull Request)

  • Chamar métodos de teste com o método with_info_handler para permitir que o plugin minitest-hooks funcione. (Commit)

  • Preservar o status de html_safe? em ActiveSupport::SafeBuffer#*. (Pull Request)

12 Active Job

Consulte o Changelog para obter alterações detalhadas.

12.1 Remoções

12.2 Depreciações

12.3 Mudanças notáveis

  • Adicionar suporte para serializadores personalizados para argumentos do Active Job. (Pull Request)

  • Adicionar suporte para executar Active Jobs no fuso horário em que eles foram enfileirados. (Pull Request)

  • Permitir passar várias exceções para retry_on/discard_on. (Commit)

  • Permitir chamar assert_enqueued_with e assert_enqueued_email_with sem um bloco. (Pull Request)

  • Envolver as notificações para enqueue e enqueue_at no callback around_enqueue em vez do callback after_enqueue. (Pull Request)

  • Permitir chamar perform_enqueued_jobs sem um bloco. (Pull Request)

  • Permitir chamar assert_performed_with sem um bloco. (Pull Request)

  • Adicione a opção :queue às asserções e ajudantes de jobs. (Pull Request)

  • Adicione ganchos para repetições e descartes no Active Job. (Pull Request)

  • Adicione uma maneira de testar um subconjunto de argumentos ao executar jobs. (Pull Request)

  • Inclua argumentos desserializados nos jobs retornados pelos ajudantes de teste do Active Job. (Pull Request)

  • Permita que os ajudantes de asserção do Active Job aceitem um Proc para a palavra-chave only. (Pull Request)

  • Remova microssegundos e nanossegundos dos argumentos do job nos ajudantes de asserção. (Pull Request)

13 Guia do Ruby on Rails

Consulte o Changelog para obter detalhes das alterações.

13.1 Alterações notáveis

  • Adicione o guia de Múltiplos Bancos de Dados com Active Record. (Pull Request)

  • Adicione uma seção sobre solução de problemas de carregamento automático de constantes. (Commit)

  • Adicione o guia de Noções Básicas do Action Mailbox. (Pull Request)

  • Adicione o guia de Visão Geral do Action Text. (Pull Request)

14 Créditos

Veja a lista completa de contribuidores para o Rails para as muitas pessoas que passaram muitas horas fazendo do Rails o framework estável e robusto que ele é. Parabéns a todos eles.

Feedback

Você é incentivado a ajudar a melhorar a qualidade deste guia.

Por favor, contribua se encontrar algum erro de digitação ou factual. Para começar, você pode ler nossa contribuição à documentação seção.

Você também pode encontrar conteúdo incompleto ou desatualizado. Por favor, adicione qualquer documentação ausente para o principal. Certifique-se de verificar Guias Edge primeiro para verificar se os problemas já foram corrigidos ou não no branch principal. Verifique as Diretrizes dos Guias do Ruby on Rails para estilo e convenções.

Se por algum motivo você encontrar algo para corrigir, mas não puder corrigi-lo você mesmo, por favor abra uma issue.

E por último, mas não menos importante, qualquer tipo de discussão sobre a documentação do Ruby on Rails é muito bem-vinda no Fórum oficial do Ruby on Rails.