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
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
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
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
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 derun
. (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 comandorails 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()
eActionCable.stopDebugging()
porActionCable.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 emcable.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
eChannel::Base.broadcasting_for
. (Pull Request)Fechar uma conexão ao chamar
reject_unauthorized_connection
de umaActionCable::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
paraActionCable.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 decombined_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 deActiveSupport::ParameterFilter
. (Pull Request)Depreciar
force_ssl
no nível do controlador em favor deconfig.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
emActionController::TestCase
. (Pull Request)Gerar um
ArgumentError
quando várias rotas raiz existirem no mesmo contexto sem especificações de nomeaçãoas:
. (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
esend_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 derespond_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
aActionDispatch::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 gemrecord_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
à tagdate_select
, tornando possível personalizar os nomes dos anos. (Pull Request)Adicione a opção
nonce: true
para o auxiliarjavascript_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 deActionView::Template
. (Pull Request)Extraia a chamada JavaScript
confirm
para seu próprio método substituível emrails_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
eParameterized::DeliveryJob
em favor deMailDeliveryJob
. (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çãodeliver.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
paraconnection.assume_migrated_upto_version
. (Commit)Depreciar
ActiveRecord::Result#to_hash
em favor deActiveRecord::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
ejoins_per_query
. (Commit)Depreciar
update_attributes
/!
em favor deupdate
/!
. (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 paraafter_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 deunscope(: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 paraActiveRecord::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
paracreate_table
. (Pull Request)Adicione suporte para vários bancos de dados em
rails db:schema:cache:dump
erails 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çãochange_table
. (Pull Request)Corrija a reversão de
transaction
para migrações. Anteriormente, comandos dentro de umatransaction
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
deremove_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étodoPersistence#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
eAssociations::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
paraActiveRecord::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 emActiveRecord::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 deconfig.active_storage.queues.analysis
econfig.active_storage.queues.purge
. (Pull Request)Depreciar
ActiveStorage::Downloading
em favor deActiveStorage::Blob#open
. (Commit)Depreciar o uso direto do
mini_magick
para gerar variantes de imagem em favor deimage_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 paraActiveStorage::Blob#download
eActiveStorage::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: [ … ])
). Useconfig.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 domini_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!
paraActiveModel::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
eFloat
convertendo paraBigDecimal
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
paraActiveModel::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 deInflections
. (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
eString#last
. (Pull Request)Deprecie
ActiveSupport::Multibyte::Unicode#downcase/upcase/swapcase
em favor deString#downcase/upcase/swapcase
. (Pull Request)Deprecie
ActiveSupport::Multibyte::Unicode#normalize
eActiveSupport::Multibyte::Chars#normalize
em favor deString#unicode_normalize
. (Pull Request)Deprecie
ActiveSupport::Multibyte::Chars.consumes?
em favor deString#is_utf8?
. (Pull Request)Deprecie
ActiveSupport::Multibyte::Unicode#pack_graphemes(array)
eActiveSupport::Multibyte::Unicode#unpack_graphemes(string)
em favor dearray.flatten.pack("U*")
estring.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étododelegate
para delegar a métodos privados. Essa opção aceitatrue/false
como valor. (Pull Request)Adicione suporte para traduções através do I18n para
ActiveSupport::Inflector#ordinal
eActiveSupport::Inflector#ordinalize
. (Pull Request)Adicione os métodos
before?
eafter?
paraDate
,DateTime
,Time
eTimeWithZone
. (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 emActiveSupport::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#===
eRange#cover?
funcionem com argumento do tipoRange
. (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çãoskip_nil
paraActiveSupport::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 detravel_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
paraActiveSupport::HashWithIndifferentAccess
falharia com argumentos de símbolo. (Pull Request)Renomear
Module#parent
,Module#parents
eModule#parent_name
paramodule_parent
,module_parents
emodule_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
emActiveSupport::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 umLoadError
para referências de constantes com caixa incorreta. (Pull Request)Adicionar
Hash#deep_transform_values
eHash#deep_transform_values!
. (Commit)Adicionar
ActiveSupport::HashWithIndifferentAccess#assoc
. (Pull Request)Adicionar callback
before_reset
paraCurrentAttributes
e definirafter_reset
como um alias deresets
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
eEnumerable#including
para aumentar convenientemente uma coleção. (Commit)Renomear
Array#without
eEnumerable#without
paraArray#excluding
eEnumerable#excluding
. Os antigos nomes dos métodos são mantidos como aliases. (Commit)Adicionar suporte para fornecer
locale
paratransliterate
eparameterize
. (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?
emActiveSupport::SafeBuffer#*
. (Pull Request)
12 Active Job
Consulte o Changelog para obter alterações detalhadas.
12.1 Remoções
- Remover suporte para a gem Qu. (Pull Request)
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
eassert_enqueued_email_with
sem um bloco. (Pull Request)Envolver as notificações para
enqueue
eenqueue_at
no callbackaround_enqueue
em vez do callbackafter_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.