1 Atualizando para o Rails 7.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 6.1, caso ainda não o tenha feito, e garantir que seu aplicativo ainda funcione como esperado antes de tentar uma atualização para o Rails 7.0. Uma lista de coisas a serem observadas ao atualizar está disponível no guia de Atualização do Ruby on Rails.
2 Recursos Principais
3 Railties
Consulte o Changelog para obter as alterações detalhadas.
3.1 Remoções
- Remover
config
obsoleto emdbconsole
.
3.2 Depreciações
3.3 Mudanças Notáveis
Sprockets agora é uma dependência opcional
A gema
rails
não depende mais desprockets-rails
. Se o seu aplicativo ainda precisa usar o Sprockets, certifique-se de adicionarsprockets-rails
ao seu Gemfile.gem "sprockets-rails"
4 Action Cable
Consulte o Changelog para obter as 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 as alterações detalhadas.
5.1 Remoções
Remover
ActionDispatch::Response.return_only_media_type_on_content_type
obsoleto.Remover
Rails.config.action_dispatch.hosts_response_app
obsoleto.Remover
ActionDispatch::SystemTestCase#host!
obsoleto.Remover suporte obsoleto para passar um caminho relativo a
fixture_path
parafixture_file_upload
.
5.2 Depreciações
5.3 Mudanças Notáveis
6 Action View
Consulte o Changelog para obter as alterações detalhadas.
6.1 Remoções
- Remover
Rails.config.action_view.raise_on_missing_translations
obsoleto.
6.2 Depreciações
6.3 Mudanças Notáveis
button_to
infere o verbo HTTP [method] a partir de um objeto Active Record se o objeto for usado para construir o URLbutton_to("Fazer um POST", [:do_post_action, Workshop.find(1)]) # Antes #=> <input type="hidden" name="_method" value="post" autocomplete="off" /> # Depois #=> <input type="hidden" name="_method" value="patch" autocomplete="off" />
7 Action Mailer
Consulte o Changelog para obter as alterações detalhadas.
7.1 Remoções
- Remover
ActionMailer::DeliveryJob
eActionMailer::Parameterized::DeliveryJob
em favor deActionMailer::MailDeliveryJob
.
7.2 Depreciações
7.3 Mudanças Notáveis
8 Active Record
Consulte o Changelog para obter as alterações detalhadas.
8.1 Remoções
Remover
database
kwarg deconnected_to
obsoleto.Remover
ActiveRecord::Base.allow_unsafe_raw_sql
obsoleto.Remover opção
:spec_name
no métodoconfigs_for
obsoleto.Remover suporte obsoleto para carregar instância de
ActiveRecord::Base
em formato Rails 4.2 e 4.1 usando YAML.Remover aviso de depreciação quando a coluna
:interval
é usada no banco de dados PostgreSQL.Agora, as colunas de intervalo retornarão objetos
ActiveSupport::Duration
em vez de strings.Para manter o comportamento antigo, você pode adicionar esta linha ao seu modelo:
attribute :column, :string
Remover suporte obsoleto para resolver conexão usando
"primary"
como nome de especificação de conexão.Remover suporte obsoleto para citar objetos
ActiveRecord::Base
.Remover suporte obsoleto para converter valores de objetos
ActiveRecord::Base
para valores de banco de dados.Remover suporte obsoleto para passar uma coluna para
type_cast
.Remover método
DatabaseConfig#config
obsoleto.Remover tarefas rake obsoletas:
db:schema:load_if_ruby
db:structure:dump
db:structure:load
db:structure:load_if_sql
db:structure:dump:#{name}
db:structure:load:#{name}
db:test:load_structure
db:test:load_structure:#{name}
Remover suporte obsoleto para
Model.reorder(nil).first
para pesquisar usando ordem não determinística.Remover argumentos
environment
ename
deTasks::DatabaseTasks.schema_up_to_date?
obsoletos.Remover
Tasks::DatabaseTasks.dump_filename
obsoleto.Remover
Tasks::DatabaseTasks.schema_file
obsoleto.Remover
Tasks::DatabaseTasks.spec
obsoleto.Remover
Tasks::DatabaseTasks.current_config
obsoleto.Remover
ActiveRecord::Connection#allowed_index_name_length
obsoleto.Remover
ActiveRecord::Connection#in_clause_length
obsoleto.Remover
ActiveRecord::DatabaseConfigurations::DatabaseConfig#spec_name
obsoleto.Remover
ActiveRecord::Base.connection_config
obsoleto.Remover
ActiveRecord::Base.arel_attribute
obsoleto.Remover
ActiveRecord::Base.configurations.default_hash
obsoleto.Remover
ActiveRecord::Base.configurations.to_h
obsoleto.Remover
ActiveRecord::Result#map!
eActiveRecord::Result#collect!
obsoletos.Remover
ActiveRecord::Base#remove_connection
obsoleto.
8.2 Depreciações
- Depreciar
Tasks::DatabaseTasks.schema_file_type
.
8.3 Mudanças Notáveis
Desfazer transações quando o bloco retorna mais cedo do que o esperado.
Antes dessa alteração, quando um bloco de transação retornava cedo, a transação era confirmada.
O problema é que os timeouts acionados dentro do bloco de transação também estavam fazendo com que a transação incompleta fosse confirmada, então, para evitar esse erro, o bloco de transação é desfeito.
Mesclar condições na mesma coluna não mantém mais ambas as condições, e será consistentemente substituída pela última condição.
# Rails 6.1 (IN clause é substituído por condição de igualdade no lado do merge) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] # Rails 6.1 (ambas as condições de conflito existem, obsoleto) Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [] # Rails 6.1 com rewhere para migrar para o comportamento do Rails 7.0 Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob] # Rails 7.0 (mesmo comportamento com IN clause, condição do merge é substituída consistentemente) Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob] Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
Active Storage
Consulte o Changelog para obter detalhes das alterações.
8.4 Remoções
8.5 Depreciações
8.6 Mudanças notáveis
9 Active Model
Consulte o Changelog para obter detalhes das alterações.
9.1 Remoções
Remova a enumeração obsoleta de instâncias de
ActiveModel::Errors
como um Hash.Remova o método obsoleto
ActiveModel::Errors#to_h
.Remova o método obsoleto
ActiveModel::Errors#slice!
.Remova o método obsoleto
ActiveModel::Errors#values
.Remova o método obsoleto
ActiveModel::Errors#keys
.Remova o método obsoleto
ActiveModel::Errors#to_xml
.Remova o suporte obsoleto para concatenar erros em
ActiveModel::Errors#messages
.Remova o suporte obsoleto para limpar erros de
ActiveModel::Errors#messages
.Remova o suporte obsoleto para excluir erros de
ActiveModel::Errors#messages
.Remova o suporte obsoleto para usar
[]=
emActiveModel::Errors#messages
.Remova o suporte para carregar o formato de erro do Rails 5.x usando Marshal e YAML.
Remova o suporte para carregar o formato
ActiveModel::AttributeSet
do Rails 5.x usando Marshal.
9.2 Depreciações
9.3 Mudanças notáveis
10 Active Support
Consulte o Changelog para obter detalhes das alterações.
10.1 Remoções
Remova a configuração obsoleta
config.active_support.use_sha1_digests
.Remova o método obsoleto
URI.parser
.Remova o suporte obsoleto para usar
Range#include?
para verificar a inclusão de um valor em um intervalo de data e hora.Remova a configuração obsoleta
ActiveSupport::Multibyte::Unicode.default_normalization_form
.
10.2 Depreciações
Deprecie a passagem de um formato para
#to_s
em favor de#to_fs
emArray
,Range
,Date
,DateTime
,Time
,BigDecimal
,Float
eInteger
.Essa depreciação permite que aplicativos Rails aproveitem uma otimização do Ruby 3.1 otimização que torna a interpolação de alguns tipos de objetos mais rápida.
Novos aplicativos não terão o método
#to_s
substituído nessas classes, aplicativos existentes podem usarconfig.active_support.disable_to_s_conversion
.
10.3 Mudanças notáveis
11 Active Job
Consulte o Changelog para obter detalhes das alterações.
11.1 Remoções
Removido o comportamento obsoleto que não interrompia os callbacks
after_enqueue
/after_perform
quando um callback anterior era interrompido comthrow :abort
.Remova a opção obsoleta
:return_false_on_aborted_enqueue
.
11.2 Depreciações
- Deprecie
Rails.config.active_job.skip_after_callbacks_if_terminated
.
11.3 Mudanças notáveis
12 Action Text
Consulte o Changelog para obter detalhes das alterações.
12.1 Remoções
12.2 Depreciações
12.3 Mudanças notáveis
13 Action Mailbox
Consulte o Changelog para obter detalhes das alterações.
13.1 Remoções
Removido o método obsoleto
Rails.application.credentials.action_mailbox.mailgun_api_key
.Removida a variável de ambiente obsoleta
MAILGUN_INGRESS_API_KEY
.
13.2 Depreciações
13.3 Mudanças notáveis
14 Ruby on Rails Guides
Consulte o Changelog para obter detalhes das alterações.
14.1 Mudanças notáveis
15 Créditos
Consulte a lista completa de contribuidores para o Rails para ver 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.