edge
Mais em rubyonrails.org: Mais Ruby on Rails

Notas de Lançamento do Ruby on Rails 6.1

Destaques no Rails 6.1:

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.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 comando rails dbconsole.

  • Remover suporte à variável de ambiente SOURCE_ANNOTATION_DIRECTORIES obsoleta do rails notes.

  • Remover argumento server obsoleto do comando rails 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 de ActionView::Template::Handlers::ERB.

  • Remover find_all_anywhere obsoleto de ActionView::Resolver.

  • Remover formats obsoleto de ActionView::Template::HTML.

  • Remover formats obsoleto de ActionView::Template::RawFile.

  • Remover formats obsoleto de ActionView::Template::Text.

  • Remover find_file obsoleto de ActionView::PathSet.

  • Remover rendered_format obsoleto de ActionView::LookupContext.

  • Remover find_file obsoleto de ActionView::ViewPaths.

  • Remover suporte obsoleto para passar um objeto que não seja um ActionView::LookupContext como o primeiro argumento em ActionView::Base#initialize.

  • Remover argumento format obsoleto em ActionView::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 em ActionView::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 em ActionView::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 em ActionView::Template#initialize.

  • Os auxiliares de ativos javascript_include_tag e stylesheet_link_tag geram um cabeçalho Link que dá dicas aos navegadores modernos sobre o pré-carregamento de ativos. Isso pode ser desativado definindo config.action_view.preload_links_header como false.

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 e ActiveRecord::Base#update_attributes!.

  • Remover o argumento migrations_path depreciado em ActiveRecord::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 em connected_to.

  • Depreciar connection_handlers quando legacy_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 em connection_handlers. Os métodos públicos para connects_to e connected_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 para ActiveStorage::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 de Blob.create_and_upload. (Pull Request)

9.3 Mudanças notáveis

  • Adicionar Blob.create_and_upload para criar um novo blob e fazer upload do io fornecido para o serviço. (Pull Request)
  • A coluna service_name foi adicionada a ActiveStorage::Blob. É necessário executar uma migração após a atualização. Execute bin/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 quando config.i18n.fallbacks está vazio.

  • Remover a constante LoggerSilence depreciada.

  • Remover ActiveSupport::LoggerThreadSafeLevel#after_initialize depreciado.

  • Remover os métodos Module#parent_name, Module#parent e Module#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? e ActiveSupport::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 e ActiveSupport::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 e MAILGUN_INGRESS_API_KEY em favor de Rails.application.credentials.action_mailbox.signing_key e MAILGUN_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.