A postagem cobrirá minha experiência. Então, minha experiência, meu projeto, minha migração. Não será o mesmo para você.
Rails 5 ainda estava em beta 1 quando fiz a migração.
Como joias adicionais para Rails, o projeto tem:
- cancancan
- inventar
- devise-i18n
- Puma
- rolificar
- autoprefixer-rails
- forma simples
- trilhos estreitos
Nesse ponto, os testes nem são executados.
A propósito, tenho 78 testes.
Inventar
devise-3.5.3/lib/devise/failure_app.rb:9:in `<class:FailureApp>': uninitialized constant ActionController::RackDelegation (NameError)
É devido à remoção de RackDelegation. Parece que foi usado para objeto de solicitação e resposta. Agora existe em todos os controladores.
O PR que o remove.
O problema do tíquete no rastreador.
A solução é usar o branch master no Github.
gem 'devise', github: 'plataformatec/devise', branch: 'master'
Nesse ponto, o teste pode ser executado … com erros, mas executado.
=> 78 examples, 23 failures
Failure/Error: expect(assigns(:organisations)).to eq(organisations)
NoMethodError:
assigns has been extracted to a gem. To continue using it,
add `gem 'rails-controller-testing'` to your Gemfile.
Auto explicado. Adicionada essa joia.
=> 78 examples, 23 failures
Isso é estranho. Não resolve o problema. O problema parece vir do RSpec.
Vamos atualizar o RSpec para o branch master (o mais recente ainda não suporta Rails 5).
%w[rspec-core rspec-expectations rspec-mocks rspec-rails rspec-support].each do |lib|
gem lib, github: "rspec/#{lib}", branch: 'master'
end
Ele está instalando uma versão muito antiga (1.x em vez de 4.x) do . Nenhuma nova versão ainda, vamos removê-la por enquanto.guard-rspec
=> 78 examples, 8 failures
Você precisará atualizar para a versão 3web-console
=> 78 examples, 6 failures
Erro do auxiliar de rotas “* _path”
ActionView::Template::Error:
undefined local variable or method `organisations_path' for #<#<Class:0x007ff526bd7248>:0x007ff52abae2e0>
No console, ele existe:
[4] pry(main)> app.organisations_path
=> "/organisations"
Ainda tem o erro, vamos mantê-lo por enquanto.
Observação: mesmo com este erro, o aplicativo parece funcionar corretamente.
Vamos remover os ruídos de advertência obsoletos.
Correções de suspensão de uso
Pedido HTTP ActionController :: TestCase
A mensagem:
DEPRECATION WARNING: ActionController::TestCase HTTP request methods will accept only
keyword arguments in future Rails versions.
Examples:
get :show, params: { id: 1 }, session: { user_id: 1 }
process :update, method: :post, params: { id: 1 }
Para mim, foi principalmente mudando de:
get :homepage, {}
para:
get :homepage, params: {}