1 Atualizando para o Rails 6.1
Se você está atualizando um aplicativo existente, é uma ótima ideia ter uma boa cobertura de testes antes de prosseguir. Você também deve primeiro atualizar para o Rails 6.0, caso ainda não o tenha feito, e garantir que seu aplicativo ainda esteja funcionando como esperado antes de tentar uma atualização para o Rails 6.1. Uma lista de coisas a serem observadas ao atualizar está disponível no guia Atualizando o Ruby on Rails.
2 Recursos Principais
2.1 Troca de Conexão por Banco de Dados
O Rails 6.1 oferece a capacidade de trocar conexões por banco de dados. No Rails 6.0, se você trocasse para a função reading
, todas as conexões do banco de dados também trocariam para a função de leitura. Agora, no Rails 6.1, se você definir legacy_connection_handling
como false
em sua configuração, o Rails permitirá que você troque as conexões para um único banco de dados chamando connected_to
na classe abstrata correspondente.
2.2 Sharding Horizontal
O Rails 6.0 permitia a partição funcional (múltiplas partições, esquemas diferentes) do seu banco de dados, mas não era capaz de suportar o sharding horizontal (mesmo esquema, múltiplas partições). O Rails não era capaz de suportar o sharding horizontal porque os modelos no Active Record só podiam ter uma conexão por função por classe. Isso agora foi corrigido e o sharding horizontal com o Rails está disponível.
2.3 Carregamento Estrito de Associações
Carregamento estrito de associações permite que você garanta que todas as suas associações sejam carregadas antecipadamente e evite N+1 antes que eles ocorram.
2.4 Tipos Delegados
Tipos delegados é uma alternativa à herança de tabela única. Isso ajuda a representar hierarquias de classes, permitindo que a superclasse seja uma classe concreta representada por sua própria tabela. Cada subclasse tem sua própria tabela para atributos adicionais.
2.5 Destruir Associações de Forma Assíncrona
Destruir associações de forma assíncrona adiciona a capacidade para aplicativos de destruir
associações em um trabalho em segundo plano. Isso pode ajudar a evitar tempos limite e outros problemas de desempenho em seu aplicativo ao destruir dados.
3 Railties
Consulte o Changelog para obter alterações detalhadas.
3.1 Remoções
Remover tarefas
rake notes
obsoletas.Remover opção
connection
obsoleta no comandorails dbconsole
.Remover suporte à variável de ambiente
SOURCE_ANNOTATION_DIRECTORIES
obsoleta dorails notes
.Remover argumento
server
obsoleto do comandorails server
.Remover suporte obsoleto para usar a variável de ambiente
HOST
para especificar o IP do servidor.Remover tarefas
rake dev:cache
obsoletas.Remover tarefas
rake routes
obsoletas.Remover tarefas
rake initializers
obsoletas.
3.2 Depreciações
3.3 Mudanças Notáveis
4 Action Cable
Consulte o Changelog para obter alterações detalhadas.
4.1 Remoções
4.2 Depreciações
4.3 Mudanças Notáveis
5 Action Pack
Consulte o Changelog para obter alterações detalhadas.
5.1 Remoções
Remover
ActionDispatch::Http::ParameterFilter
obsoleto.Remover
force_ssl
obsoleto no nível do controlador.
5.2 Depreciações
- Depreciar
config.action_dispatch.return_only_media_type_on_content_type
.
5.3 Mudanças Notáveis
- Alterar
ActionDispatch::Response#content_type
para retornar o cabeçalho completo Content-Type.
6 Action View
Consulte o Changelog para obter alterações detalhadas.
6.1 Remoções
Remover
escape_whitelist
obsoleto deActionView::Template::Handlers::ERB
.Remover
find_all_anywhere
obsoleto deActionView::Resolver
.Remover
formats
obsoleto deActionView::Template::HTML
.Remover
formats
obsoleto deActionView::Template::RawFile
.Remover
formats
obsoleto deActionView::Template::Text
.Remover
find_file
obsoleto deActionView::PathSet
.Remover
rendered_format
obsoleto deActionView::LookupContext
.Remover
find_file
obsoleto deActionView::ViewPaths
.Remover suporte obsoleto para passar um objeto que não seja um
ActionView::LookupContext
como o primeiro argumento emActionView::Base#initialize
.Remover argumento
format
obsoleto emActionView::Base#initialize
.Remover
ActionView::Template#refresh
obsoleto.Remover
ActionView::Template#original_encoding
obsoleto.Remover
ActionView::Template#variants
obsoleto.Remover
ActionView::Template#formats
obsoleto.Remover
ActionView::Template#virtual_path=
obsoleto.Remover
ActionView::Template#updated_at
obsoleto.Remover argumento
updated_at
obrigatório emActionView::Template#initialize
.Remover
ActionView::Template.finalize_compiled_template_methods
obsoleto.Remover
config.action_view.finalize_compiled_template_methods
obsoleto.Remover suporte obsoleto para chamar
ActionView::ViewPaths#with_fallback
com um bloco.Remover suporte obsoleto para passar caminhos absolutos para
render template:
.Remover suporte obsoleto para passar caminhos relativos para
render file:
.Remover suporte a manipuladores de templates que não aceitam dois argumentos.
Remover argumento
pattern
obsoleto emActionView::Template::PathResolver
.Remover suporte obsoleto para chamar métodos privados de objeto em alguns helpers de visualização.
6.2 Depreciações
6.3 Mudanças Notáveis
Exigir que as subclasses de
ActionView::Base
implementem#compiled_method_container
.Tornar o argumento
locals
obrigatório emActionView::Template#initialize
.Os auxiliares de ativos
javascript_include_tag
estylesheet_link_tag
geram um cabeçalhoLink
que dá dicas aos navegadores modernos sobre o pré-carregamento de ativos. Isso pode ser desativado definindoconfig.action_view.preload_links_header
comofalse
.
7 Action Mailer
Consulte o Changelog para obter detalhes das alterações.
7.1 Remoções
- Remover o método depreciado
ActionMailer::Base.receive
em favor do Action Mailbox.
7.2 Depreciações
7.3 Mudanças notáveis
8 Active Record
Consulte o Changelog para obter detalhes das alterações.
8.1 Remoções
Remover métodos depreciados de
ActiveRecord::ConnectionAdapters::DatabaseLimits
.column_name_length
table_name_length
columns_per_table
indexes_per_table
columns_per_multicolumn_index
sql_query_length
joins_per_query
Remover o método depreciado
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_multi_insert?
.Remover o método depreciado
ActiveRecord::ConnectionAdapters::AbstractAdapter#supports_foreign_keys_in_create?
.Remover o método depreciado
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter#supports_ranges?
.Remover os métodos depreciados
ActiveRecord::Base#update_attributes
eActiveRecord::Base#update_attributes!
.Remover o argumento
migrations_path
depreciado emActiveRecord::ConnectionAdapter::SchemaStatements#assume_migrated_upto_version
.Remover
config.active_record.sqlite3.represent_boolean_as_integer
depreciado.Remover métodos depreciados de
ActiveRecord::DatabaseConfigurations
.fetch
each
first
values
[]=
Remover o método depreciado
ActiveRecord::Result#to_hash
.Remover o suporte depreciado ao uso de SQL bruto inseguro nos métodos de
ActiveRecord::Relation
.
8.2 Depreciações
Depreciar
ActiveRecord::Base.allow_unsafe_raw_sql
.Depreciar o argumento
database
emconnected_to
.Depreciar
connection_handlers
quandolegacy_connection_handling
é definido como false.
8.3 Mudanças notáveis
MySQL: O validador de unicidade agora respeita a colação padrão do banco de dados, não mais força comparação case-sensitive por padrão.
relation.create
não vaza mais o escopo para métodos de consulta em nível de classe no bloco de inicialização e nos callbacks.Antes:
User.where(name: "John").create do |john| User.find_by(name: "David") # => nil end
Depois:
User.where(name: "John").create do |john| User.find_by(name: "David") # => #<User name: "David", ...> end
A cadeia de escopos nomeados não vaza mais o escopo para métodos de consulta em nível de classe.
class User < ActiveRecord::Base scope :david, -> { User.where(name: "David") } end
Antes:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'John' AND name = 'David'
Depois:
User.where(name: "John").david # SELECT * FROM users WHERE name = 'David'
where.not
agora gera predicados NAND em vez de NOR.Antes:
User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE name != 'Jon' AND role != 'admin'
Depois:
User.where.not(name: "Jon", role: "admin") # SELECT * FROM users WHERE NOT (name = 'Jon' AND role = 'admin')
Para usar o novo tratamento de conexão por banco de dados, as aplicações devem alterar
legacy_connection_handling
para false e remover os acessores depreciados emconnection_handlers
. Os métodos públicos paraconnects_to
econnected_to
não requerem alterações.
9 Active Storage
Consulte o Changelog para obter detalhes das alterações.
9.1 Remoções
Remover o suporte depreciado para passar operações
:combine_options
paraActiveStorage::Transformers::ImageProcessing
.Remover
ActiveStorage::Transformers::MiniMagickTransformer
depreciado.Remover
config.active_storage.queue
depreciado.Remover
ActiveStorage::Downloading
depreciado.
9.2 Depreciações
- Depreciar
Blob.create_after_upload
em favor deBlob.create_and_upload
. (Pull Request)
9.3 Mudanças notáveis
- Adicionar
Blob.create_and_upload
para criar um novo blob e fazer upload doio
fornecido para o serviço. (Pull Request) - A coluna
service_name
foi adicionada aActiveStorage::Blob
. É necessário executar uma migração após a atualização. Executebin/rails app:update
para gerar essa migração.
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
- Os erros do Active Model agora são objetos com uma interface que permite que sua aplicação lide e interaja mais facilmente com os erros lançados pelos modelos. A funcionalidade inclui uma interface de consulta, permite testes mais precisos e acesso aos detalhes do erro.
11 Active Support
Consulte o Changelog para obter detalhes das alterações.
11.1 Remoções
Remover o fallback depreciado para
I18n.default_locale
quandoconfig.i18n.fallbacks
está vazio.Remover a constante
LoggerSilence
depreciada.Remover
ActiveSupport::LoggerThreadSafeLevel#after_initialize
depreciado.Remover os métodos
Module#parent_name
,Module#parent
eModule#parents
depreciados.Remover o arquivo
active_support/core_ext/module/reachable
depreciado.Remover o arquivo
active_support/core_ext/numeric/inquiry
depreciado.Remover o arquivo
active_support/core_ext/array/prepend_and_append
depreciado.Remover o arquivo
active_support/core_ext/hash/compact
depreciado.Remover o arquivo
active_support/core_ext/hash/transform_values
depreciado.Remover o arquivo
active_support/core_ext/range/include_range
depreciado.Remover
ActiveSupport::Multibyte::Chars#consumes?
eActiveSupport::Multibyte::Chars#normalize
depreciados.Remover
ActiveSupport::Multibyte::Unicode.pack_graphemes
,ActiveSupport::Multibyte::Unicode.unpack_graphemes
,ActiveSupport::Multibyte::Unicode.normalize
,ActiveSupport::Multibyte::Unicode.downcase
,ActiveSupport::Multibyte::Unicode.upcase
eActiveSupport::Multibyte::Unicode.swapcase
depreciados.Remover
ActiveSupport::Notifications::Instrumenter#end=
depreciado.
11.2 Depreciações
- Depreciar
ActiveSupport::Multibyte::Unicode.default_normalization_form
.
11.3 Mudanças notáveis
12 Active Job
Consulte o Changelog para obter detalhes das alterações.
12.1 Remoções
12.2 Depreciações
- Depreciar
config.active_job.return_false_on_aborted_enqueue
.
12.3 Mudanças notáveis
- Retornar
false
quando o enfileiramento de um job é abortado.
13 Action Text
Consulte o Changelog para obter detalhes das alterações.
13.1 Remoções
13.2 Depreciações
13.3 Mudanças notáveis
Adicionar método para confirmar a existência de conteúdo de texto rico adicionando
?
após o nome do atributo de texto rico. (Pull Request)Adicionar o helper de caso de teste do sistema
fill_in_rich_text_area
para encontrar um editor trix e preenchê-lo com o conteúdo HTML fornecido. (Pull Request)Adicione
ActionText::FixtureSet.attachment
para gerar elementos<action-text-attachment>
nos fixtures do banco de dados. (Pull Request)
14 Action Mailbox
Consulte o Changelog para obter detalhes das alterações.
14.1 Remoções
14.2 Depreciações
- Depreciar
Rails.application.credentials.action_mailbox.api_key
eMAILGUN_INGRESS_API_KEY
em favor deRails.application.credentials.action_mailbox.signing_key
eMAILGUN_INGRESS_SIGNING_KEY
.
14.3 Mudanças notáveis
15 Ruby on Rails Guides
Consulte o Changelog para obter detalhes das alterações.
15.1 Mudanças notáveis
16 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.