1 Atualizando para o Rails 5.2
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 5.1, caso ainda não tenha feito isso, e garantir que seu aplicativo ainda funcione conforme o esperado antes de tentar atualizar para o Rails 5.2. Uma lista de coisas a serem observadas ao atualizar está disponível no guia Atualizando o Ruby on Rails.
2 Recursos Principais
2.1 Active Storage
Active Storage facilita o upload de arquivos para um serviço de armazenamento em nuvem como Amazon S3, Google Cloud Storage ou Microsoft Azure Storage e a anexação desses arquivos a objetos Active Record. Ele vem com um serviço baseado em disco local para desenvolvimento e teste e suporta espelhamento de arquivos para serviços subordinados para backups e migrações. Você pode ler mais sobre o Active Storage no guia Visão Geral do Active Storage.
2.2 Redis Cache Store
O Rails 5.2 vem com o Redis cache store integrado. Você pode ler mais sobre isso no guia Cache com Rails: Uma Visão Geral.
2.3 HTTP/2 Early Hints
O Rails 5.2 suporta HTTP/2 Early Hints. Para iniciar o servidor com Early Hints habilitado, passe --early-hints
para bin/rails server
.
2.4 Credentials
Adicionado o arquivo config/credentials.yml.enc
para armazenar segredos do aplicativo de produção. Isso permite salvar quaisquer credenciais de autenticação para serviços de terceiros diretamente no repositório, criptografadas com uma chave no arquivo config/master.key
ou na variável de ambiente RAILS_MASTER_KEY
. Isso eventualmente substituirá Rails.application.secrets
e os segredos criptografados introduzidos no Rails 5.1. Além disso, o Rails 5.2 abre a API subjacente das Credentials, para que você possa lidar facilmente com outras configurações, chaves e arquivos criptografados. Você pode ler mais sobre isso no guia Protegendo Aplicações Rails.
2.5 Política de Segurança de Conteúdo
O Rails 5.2 vem com uma nova DSL que permite configurar uma Política de Segurança de Conteúdo para sua aplicação. Você pode configurar uma política padrão global e, em seguida, substituí-la em uma base por recurso e até mesmo usar lambdas para injetar valores por solicitação no cabeçalho, como subdomínios de conta em uma aplicação multi-inquilino. Você pode ler mais sobre isso no guia Securing Rails Applications.
3 Railties
Consulte o Changelog para obter alterações detalhadas.
3.1 Descontinuações
Descontinuar o método
capify!
em geradores e modelos. (Solicitação de Pull)Passar o nome do ambiente como um argumento regular para os comandos
rails dbconsole
erails console
está descontinuado. A opção-e
deve ser usada em seu lugar. (Commit)Descontinuar o uso de subclasses de
Rails::Application
para iniciar o servidor Rails. (Solicitação de Pull)Descontinuar o callback
after_bundle
em modelos de plugins do Rails. (Solicitação de Pull)
3.2 Mudanças notáveis
Adicionada uma seção compartilhada ao
config/database.yml
que será carregada para todos os ambientes. (Solicitação de Pull)Adicionar
railtie.rb
ao gerador de plugins. (Solicitação de Pull)Limpar arquivos de captura de tela na tarefa
tmp:clear
. (Solicitação de Pull)Ignorar componentes não utilizados ao executar
bin/rails app:update
. Se a geração inicial do aplicativo ignorou o Action Cable, Active Record, etc., a tarefa de atualização também respeita essas exclusões. (Solicitação de Pull)Permitir passar um nome de conexão personalizado para o comando
rails dbconsole
ao usar uma configuração de banco de dados de 3 níveis. Exemplo:bin/rails dbconsole -c replica
. (Commit)Expandir corretamente atalhos para o nome do ambiente ao executar os comandos
console
edbconsole
. (Commit)Adicionar
bootsnap
aoGemfile
padrão. (Solicitação de Pull)Suportar
-
como uma forma independente de plataforma para executar um script a partir da entrada padrão comrails runner
. (Solicitação de Pull)Adicionar a versão
ruby x.x.x
aoGemfile
e criar o arquivo.ruby-version
na raiz contendo a versão atual do Ruby quando novas aplicações Rails são criadas. (Solicitação de Pull)Adicionar a opção
--skip-action-cable
ao gerador de plugins. (Solicitação de Pull)Adicione
git_source
aoGemfile
para o gerador de plugins. (Pull Request)Pule componentes não utilizados ao executar
bin/rails
em um plugin do Rails. (Commit)Otimize a indentação para ações do gerador. (Pull Request)
Otimize a indentação das rotas. (Pull Request)
Adicione a opção
--skip-yarn
ao gerador de plugins. (Pull Request)Suporte a múltiplos argumentos de versão para o método
gem
dos Geradores. (Pull Request)Derive
secret_key_base
do nome do aplicativo nos ambientes de desenvolvimento e teste. (Pull Request)Adicione
mini_magick
aoGemfile
padrão como comentário. (Pull Request)rails new
erails plugin new
obtêmActive Storage
por padrão. Adicione a capacidade de pular oActive Storage
com--skip-active-storage
e faça isso automaticamente quando--skip-active-record
for usado. (Pull Request)
4 Action Cable
Consulte o Changelog para obter alterações detalhadas.
4.1 Remoções
- Removido adaptador de redis com eventos obsoletos. (Commit)
4.2 Mudanças notáveis
Adicione suporte às opções
host
,port
,db
epassword
em cable.yml (Pull Request)Hash identificadores longos de stream ao usar o adaptador PostgreSQL. (Pull Request)
5 Action Pack
Consulte o Changelog para obter alterações detalhadas.
5.1 Remoções
- Remova
ActionController::ParamsParser::ParseError
obsoleto. (Commit)
5.2 Depreciações
- Deprecie os aliases
#success?
,#missing?
e#error?
deActionDispatch::TestResponse
. (Pull Request)
5.3 Mudanças notáveis
Adicione suporte a chaves de cache recicláveis com cache de fragmentos. (Pull Request)
Altere o formato da chave de cache para fragmentos para facilitar a depuração da chave. (Pull Request)
Cookies e sessões criptografados AEAD com GCM. (Pull Request)
Proteja contra falsificação por padrão. (Pull Request)
Expiração de cookies e sessões assinados/criptografados no lado do servidor. (Pull Request)
A opção
:expires
dos cookies suporta objetosActiveSupport::Duration
. (Pull Request)Use a configuração do servidor
:puma
registrado no Capybara. (Pull Request)Simplifique o middleware de cookies com suporte à rotação de chaves. (Pull Request)
Adicione a capacidade de habilitar Early Hints para HTTP/2. (Pull Request)
Adicione suporte ao chrome headless aos Testes de Sistema. (Pull Request)
Adicione a opção
:allow_other_host
ao métodoredirect_back
. (Pull Request)Faça
assert_recognizes
percorrer engines montados. (Pull Request)Adicione DSL para configurar o cabeçalho Content-Security-Policy. (Pull Request, Commit, Commit)
Registre os tipos MIME de áudio/vídeo/fonte mais populares suportados pelos navegadores modernos. (Pull Request)
Altere a saída padrão de captura de tela dos testes de sistema de
inline
parasimple
. (Commit)Adicione suporte ao Firefox sem interface gráfica aos testes de sistema. (Pull Request)
Adicione
X-Download-Options
seguro eX-Permitted-Cross-Domain-Policies
aos cabeçalhos padrão. (Commit)Altere os testes de sistema para definir o Puma como servidor padrão apenas quando o usuário não especificar manualmente outro servidor. (Pull Request)
Adicione o cabeçalho
Referrer-Policy
aos cabeçalhos padrão. (Commit)Iguala o comportamento de
Hash#each
emActionController::Parameters#each
. (Pull Request)Adicione suporte para geração automática de nonce para o Rails UJS. (Commit)
Atualize o valor padrão de max-age do HSTS para 31536000 segundos (1 ano) para atender ao requisito mínimo de max-age para https://hstspreload.org/. (Commit)
Adicione o método de alias
to_hash
parato_h
paracookies
. Adicione o método de aliasto_h
parato_hash
parasession
. (Commit)
6 Action View
Consulte o Changelog para obter detalhes das alterações.
6.1 Remoções
- Remova o manipulador ERB Erubis obsoleto. (Commit)
6.2 Depreciações
- Deprecie o auxiliar
image_alt
que costumava adicionar texto alt padrão às imagens geradas porimage_tag
. (Pull Request)
6.3 Mudanças notáveis
Adicione o tipo
:json
aoauto_discovery_link_tag
para suportar JSON Feeds. (Pull Request)Adicione a opção
srcset
ao auxiliarimage_tag
. (Pull Request)Corrija problemas com
field_error_proc
envolvendooptgroup
eoption
de divisão de seleção. (Pull Request)Altere
form_with
para gerar ids por padrão. (Commit)Adicione o auxiliar
preload_link_tag
. (Pull Request)Permita o uso de objetos chamáveis como métodos de grupo para seleções agrupadas. (Pull Request)
7 Action Mailer
Consulte o Changelog para obter detalhes das alterações.
7.1 Mudanças notáveis
Permita que as classes do Action Mailer configurem seu trabalho de entrega. (Pull Request)
Adicione o auxiliar de teste
assert_enqueued_email_with
. (Pull Request)
8 Active Record
Consulte o Changelog para obter detalhes das alterações.
8.1 Remoções
Remova
#migration_keys
obsoleta. (Pull Request)Remova o suporte obsoleto a
quoted_id
ao converter o tipo de um objeto Active Record. (Commit)Remova o argumento obsoleto
default
deindex_name_exists?
. (Commit)Remova o suporte obsoleto ao passar uma classe para
:class_name
em associações. (Commit)Remova os métodos obsoletos
initialize_schema_migrations_table
einitialize_internal_metadata_table
. (Commit)Remova o método obsoleto
supports_migrations?
. (Commit)Remova o método obsoleto
supports_primary_key?
. (Commit)Remova o método obsoleto
ActiveRecord::Migrator.schema_migrations_table_name
. (Commit)Remova o argumento obsoleto
name
de#indexes
. (Commit)Remova os argumentos obsoletos de
#verify!
. (Commit)Remova a configuração obsoleta
.error_on_ignored_order_or_limit
. (Commit)Remova o método obsoleto
#scope_chain
. (Commit)Remova o método obsoleto
#sanitize_conditions
. (Commit)
8.2 Depreciações
Deprecie
supports_statement_cache?
. (Pull Request)Deprecie a passagem de argumentos e bloco ao mesmo tempo para
count
esum
emActiveRecord::Calculations
. (Pull Request)Deprecie a delegação para
arel
emRelation
. (Pull Request)Deprecie o método
set_state
emTransactionState
. (Commit)Deprecie o método
expand_hash_conditions_for_aggregates
sem substituição. (Commit)
8.3 Mudanças notáveis
Ao chamar o método de acesso dinâmico ao fixture sem argumentos, agora ele retorna todos os fixtures desse tipo. Anteriormente, esse método sempre retornava um array vazio. (Pull Request)
Corrija a inconsistência com atributos alterados ao substituir o leitor de atributos do Active Record. (Pull Request)
Suporte a índices descendentes para o MySQL. (Pull Request)
Corrija a primeira migração do
bin/rails db:forward
. (Commit)Gere um erro
UnknownMigrationVersionError
ao mover migrações quando a migração atual não existe. (Commit)Respeite
SchemaDumper.ignore_tables
nas tarefas do rake para o dump da estrutura do banco de dados. (Pull Request)Adicione
ActiveRecord::Base#cache_version
para suportar chaves de cache recicláveis através das novas entradas versionadas emActiveSupport::Cache
. Isso também significa queActiveRecord::Base#cache_key
agora retornará uma chave estável que não inclui mais um carimbo de data e hora. (Pull Request)Evite a criação de parâmetros de ligação se o valor convertido for nulo. (Pull Request)
Use o INSERT em massa para inserir fixtures para melhor desempenho. (Pull Request)
A fusão de duas relações que representam junções aninhadas não transforma mais as junções da relação fundida em LEFT OUTER JOIN. (Pull Request)
Corrigir transações para aplicar estado às transações filhas. Anteriormente, se você tivesse uma transação aninhada e a transação externa fosse revertida, o registro da transação interna ainda seria marcado como persistente. Isso foi corrigido aplicando o estado da transação pai à transação filha quando a transação pai é revertida. Isso marcará corretamente os registros da transação interna como não persistente. (Commit)
Corrigir carregamento antecipado/precarregamento de associação com escopo incluindo junções. (Pull Request)
Impedir que erros gerados por assinantes de notificações
sql.active_record
sejam convertidos em exceçõesActiveRecord::StatementInvalid
. (Pull Request)Ignorar o cache de consultas ao trabalhar com lotes de registros (
find_each
,find_in_batches
,in_batches
). (Commit)Alterar a serialização booleana do sqlite3 para usar 1 e 0. O SQLite reconhece nativamente 1 e 0 como verdadeiro e falso, mas não reconhece nativamente 't' e 'f' como era serializado anteriormente. (Pull Request)
Os valores construídos usando atribuição de vários parâmetros agora usarão o valor pós-cast para renderização em campos de formulário de único campo. (Commit)
ApplicationRecord
não é mais gerado ao gerar modelos. Se você precisar gerá-lo, ele pode ser criado comrails g application_record
. (Pull Request)Relation#or
agora aceita duas relações que têm valores diferentes parareferences
apenas, poisreferences
pode ser chamado implicitamente porwhere
. (Commit)Ao usar
Relation#or
, extrair as condições comuns e colocá-las antes da condição OR. (Pull Request)Adicionar o método auxiliar de fixture
binary
. (Pull Request)Adivinhar automaticamente as associações inversas para STI. (Pull Request)
Adicionar nova classe de erro
LockWaitTimeout
que será levantada quando o tempo limite de espera do bloqueio for excedido. (Pull Request)Atualizar os nomes dos payloads para a instrumentação
sql.active_record
para serem mais descritivos. (Pull Request)Usar o algoritmo fornecido ao remover o índice do banco de dados. (Pull Request)
Passar um
Set
paraRelation#where
agora se comporta da mesma forma que passar um array. (Commit)O
tsrange
do PostgreSQL agora preserva a precisão de subsegundos. (Pull Request)Gera um erro ao chamar
lock!
em um registro sujo. (Commit)Corrigido um bug onde a ordem das colunas para um índice não era escrita em
db/schema.rb
ao usar o adaptador SQLite. (Pull Request)Corrigir
bin/rails db:migrate
comVERSION
especificado.bin/rails db:migrate
comVERSION
vazio se comporta como semVERSION
. Verificar o formato deVERSION
: Permitir um número de versão de migração ou nome de um arquivo de migração. Gerar erro se o formato deVERSION
for inválido. Gerar erro se a migração de destino não existir. (Pull Request)Adicionar nova classe de erro
StatementTimeout
que será gerada quando o tempo limite da declaração for excedido. (Pull Request)update_all
agora passará seus valores paraType#cast
antes de passá-los paraType#serialize
. Isso significa queupdate_all(foo: 'true')
irá persistir corretamente um booleano. (Commit)Exigir que fragmentos de SQL brutos sejam marcados explicitamente quando usados em métodos de consulta de relação. (Commit, Commit)
Adicionar
#up_only
às migrações de banco de dados para código que é relevante apenas ao migrar para cima, por exemplo, popular uma nova coluna. (Pull Request)Adicionar nova classe de erro
QueryCanceled
que será gerada ao cancelar a declaração devido a uma solicitação do usuário. (Pull Request)Não permitir que escopos sejam definidos em conflito com métodos de instância em
Relation
. (Pull Request)Adicionar suporte para classes de operadores do PostgreSQL ao
add_index
. (Pull Request)Registrar os chamadores das consultas do banco de dados. (Pull Request, Pull Request, Pull Request)
Desdefinir métodos de atributo nos descendentes ao redefinir informações de coluna. (Pull Request)
Usar subseleção para
delete_all
comlimit
ouoffset
. (Commit)Corrigida inconsistência com
first(n)
quando usado comlimit()
. O localizadorfirst(n)
agora respeita olimit()
, tornando-o consistente comrelation.to_a.first(n)
, e também com o comportamento delast(n)
. (Pull Request)Corrigir associações aninhadas
has_many :through
em instâncias pai não persistidas. (Commit)Levar em consideração as condições de associação ao excluir registros. (Commit)
Não permitir a mutação de objetos destruídos após a chamada de
save
ousave!
. (Commit)Corrigir problema de mesclagem de relação com
left_outer_joins
. (Pull Request)Suporte para tabelas estrangeiras do PostgreSQL. (Pull Request)
Limpar o estado da transação quando um objeto Active Record é duplicado. (Pull Request)
Corrigir problema de não expansão ao passar um objeto Array como argumento para o método where usando coluna
composed_of
. (Pull Request)Fazer
reflection.klass
lançar uma exceção sepolymorphic?
não for usado corretamente. (Commit)Corrigir
#columns_for_distinct
do MySQL e PostgreSQL para fazerActiveRecord::FinderMethods#limited_ids_for
usar os valores corretos da chave primária mesmo se as colunasORDER BY
incluírem a chave primária de outra tabela. (Commit)Corrigir problema de
dependent: :destroy
para relacionamento has_one/belongs_to onde a classe pai estava sendo excluída quando o filho não estava. (Commit)Conexões inativas do banco de dados (anteriormente apenas conexões órfãs) agora são periodicamente removidas pelo coletor de conexões do pool de conexões. (Commit)
9 Active Model
Consulte o Changelog para obter detalhes das alterações.
9.1 Alterações notáveis
Corrigir os métodos
#keys
,#values
emActiveModel::Errors
. Alterar#keys
para retornar apenas as chaves que não possuem mensagens vazias. Alterar#values
para retornar apenas os valores não vazios. (Pull Request)Adicionar o método
#merge!
paraActiveModel::Errors
. (Pull Request)Permitir passar um Proc ou Symbol para as opções do validador de comprimento. (Pull Request)
Executar a validação do
ConfirmationValidator
quando o valor de_confirmation
forfalse
. (Pull Request)Modelos que usam a API de atributos com um valor padrão de proc agora podem ser serializados. (Commit)
Não perder todas as múltiplas
:includes
com opções na serialização. (Commit)
10 Active Support
Consulte o Changelog para obter detalhes das alterações.
10.1 Remoções
Remover o filtro de string
:if
e:unless
depreciado para callbacks. (Commit)Remover a opção
halt_callback_chains_on_return_false
depreciada. (Commit)
10.2 Depreciações
Depreciar o método
Module#reachable?
. (Pull Request)Depreciar
secrets.secret_token
. (Commit)
10.3 Alterações notáveis
- Adicionar
fetch_values
paraHashWithIndifferentAccess
. (Pull Request) Adicionar suporte para
:offset
ao métodoTime#change
. (Commit)Adicionar suporte para
:offset
e:zone
ao métodoActiveSupport::TimeWithZone#change
. (Commit)Passar o nome da gem e o horizonte de depreciação para as notificações de depreciação. (Pull Request)
Adicionar suporte para entradas de cache versionadas. Isso permite que os armazenamentos de cache reciclem as chaves de cache, economizando muito espaço de armazenamento em casos com churn frequente. Funciona em conjunto com a separação de
#cache_key
e#cache_version
no Active Record e seu uso no fragment caching do Action Pack. (Pull Request)Adicionar
ActiveSupport::CurrentAttributes
para fornecer um singleton de atributos isolados por thread. O caso de uso principal é manter todos os atributos por solicitação facilmente disponíveis para todo o sistema. (Pull Request)#singularize
e#pluralize
agora respeitam os incontáveis para o local especificado. (Commit)Adicionar opção padrão para
class_attribute
. (Pull Request)Adicionar
Date#prev_occurring
eDate#next_occurring
para retornar o próximo/último dia da semana especificado. (Pull Request)Adicionar opção padrão para acessores de atributos de módulo e classe. (Pull Request)
Cache:
write_multi
. (Pull Request)Definir o
ActiveSupport::MessageEncryptor
para usar criptografia AES 256 GCM por padrão. (Pull Request)Adicionar helper
freeze_time
que congela o tempo emTime.now
nos testes. (Pull Request)Tornar a ordem de
Hash#reverse_merge!
consistente comHashWithIndifferentAccess
. (Pull Request)Adicionar suporte a propósito e expiração para
ActiveSupport::MessageVerifier
eActiveSupport::MessageEncryptor
. (Pull Request)Atualizar
String#camelize
para fornecer feedback quando uma opção incorreta é passada. (Pull Request)Module#delegate_missing_to
agora levantaDelegationError
se o alvo for nulo, semelhante aModule#delegate
. (Pull Request)Adicionar
ActiveSupport::EncryptedFile
eActiveSupport::EncryptedConfiguration
. (Pull Request)Adicionar
config/credentials.yml.enc
para armazenar segredos de aplicativos de produção. (Pull Request)Adicionar suporte a rotação de chaves para
MessageEncryptor
eMessageVerifier
. (Pull Request)Retornar uma instância de
HashWithIndifferentAccess
deHashWithIndifferentAccess#transform_keys
. (Pull Request)Hash#slice
agora usa a definição nativa do Ruby 2.5+ se definida. (Commit)IO#to_json
agora retorna a representação deto_s
, em vez de tentar converter para um array. Isso corrige um bug ondeIO#to_json
lançaria umIOError
quando chamado em um objeto não legível. (Pull Request)Adicione a mesma assinatura de método para
Time#prev_day
eTime#next_day
de acordo comDate#prev_day
,Date#next_day
. Permite passar argumento paraTime#prev_day
eTime#next_day
. (Commit)Adicione a mesma assinatura de método para
Time#prev_month
eTime#next_month
de acordo comDate#prev_month
,Date#next_month
. Permite passar argumento paraTime#prev_month
eTime#next_month
. (Commit)Adicione a mesma assinatura de método para
Time#prev_year
eTime#next_year
de acordo comDate#prev_year
,Date#next_year
. Permite passar argumento paraTime#prev_year
eTime#next_year
. (Commit)Corrija o suporte a siglas em
humanize
. (Commit)Permita
Range#include?
em intervalos de TWZ. (Pull Request)Cache: Ative a compressão por padrão para valores > 1kB. (Pull Request)
Armazenamento de cache Redis. (Pull Request, Pull Request)
Trate erros de
TZInfo::AmbiguousTime
. (Pull Request)MemCacheStore: Suporte a expiração de contadores. (Commit)
Faça
ActiveSupport::TimeZone.all
retornar apenas fusos horários que estão emActiveSupport::TimeZone::MAPPING
. (Pull Request)Alterado o comportamento padrão de
ActiveSupport::SecurityUtils.secure_compare
, para não vazar informações de comprimento mesmo para strings de comprimento variável. Renomeado o antigoActiveSupport::SecurityUtils.secure_compare
parafixed_length_secure_compare
, e começou a lançarArgumentError
em caso de incompatibilidade de comprimento das strings passadas. (Pull Request)Use SHA-1 para gerar resumos não sensíveis, como o cabeçalho ETag. (Pull Request, Pull Request)
assert_changes
sempre irá verificar se a expressão muda, independentemente das combinações de argumentosfrom:
eto:
. (Pull Request)Adicione instrumentação ausente para
read_multi
emActiveSupport::Cache::Store
. (Pull Request)Suporte a hash como primeiro argumento em
assert_difference
. Isso permite especificar várias diferenças numéricas na mesma asserção. (Pull Request)Caching: Aceleração de
read_multi
efetch_multi
do MemCache e Redis. Leia do cache local em memória antes de consultar o backend. (Commit)
11 Active Job
Consulte o Changelog para obter detalhes das alterações.
11.1 Alterações notáveis
- Permita que um bloco seja passado para
ActiveJob::Base.discard_on
para permitir manipulação personalizada de descarte de jobs. (Pull Request)
12 Ruby on Rails Guides
Consulte o Changelog para obter detalhes das alterações.
12.1 Alterações notáveis
Adicione o Guia Threading and Code Execution in Rails. (Pull Request)
Adicionar Visão Geral do Active Storage Guia. (Pull Request)
13 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.