Faraday: Quebrando mudanças para fastlane em 0.16.2

Criado em 29 set. 2019  ·  15Comentários  ·  Fonte: lostisland/faraday

Informação básica

  • Versão Faraday: 0.16.2
  • Versão do rubi:

    • Windows: ruby ​​2.4.6p354 (2019-04-01 revisão 67394) [x64-mingw32]

    • Mac: Ruby 2.5

Descrição do problema

Mesmo com faraday 0.16.2 e as correções de @BobbyMcWho existem falhas de teste para fastlane:

Failures:
  1) Spaceship::Portal::Persons should change role
     Failure/Error: expect { person.change_role("member") }.to_not(raise_error)
       expected no Exception, got #<RuntimeError: can't modify frozen String> with backtrace:
         # ./spaceship/lib/spaceship/client.rb:811:in `force_encoding'
         # ./spaceship/lib/spaceship/client.rb:811:in `log_response'
         # ./spaceship/lib/spaceship/client.rb:846:in `block in send_request'
         # ./spaceship/lib/spaceship/client.rb:620:in `with_retry'
         # ./spaceship/lib/spaceship/client.rb:844:in `send_request'
         # ./spaceship/lib/spaceship/client.rb:688:in `request'
         # ./spaceship/lib/spaceship/portal/portal_client.rb:449:in `team_set_role'
         # ./spaceship/lib/spaceship/portal/person.rb:45:in `change_role'
         # ./spaceship/spec/portal/person_spec.rb:58:in `block (3 levels) in <top (required)>'
         # ./spaceship/spec/portal/person_spec.rb:58:in `block (2 levels) in <top (required)>'
     # ./spaceship/spec/portal/person_spec.rb:58:in `block (2 levels) in <top (required)>'
  2) Spaceship::Tunes::IAPList IAPList can delete
     Failure/Error: deleted = app.in_app_purchases.find("go.find.me").delete!
     RuntimeError:
       can't modify frozen String
     # ./spaceship/lib/spaceship/client.rb:811:in `force_encoding'
     # ./spaceship/lib/spaceship/client.rb:811:in `log_response'
     # ./spaceship/lib/spaceship/client.rb:846:in `block in send_request'
     # ./spaceship/lib/spaceship/client.rb:620:in `with_retry'
     # ./spaceship/lib/spaceship/client.rb:844:in `send_request'
     # ./spaceship/lib/spaceship/client.rb:688:in `request'
     # ./spaceship/lib/spaceship/tunes/tunes_client.rb:1235:in `delete_iap!'
     # ./spaceship/lib/spaceship/tunes/iap_list.rb:72:in `delete!'
     # ./spaceship/spec/tunes/iap_list_spec.rb:28:in `block (3 levels) in <top (required)>'
  3) Spaceship::Tunes::Members members creates a new member role: admin, apps: all
     Failure/Error: Spaceship::Members.create!(firstname: "Helmut", lastname: "Januschka", email_address: "[email protected]")
     RuntimeError:
       can't modify frozen String
     # ./spaceship/lib/spaceship/client.rb:811:in `force_encoding'
     # ./spaceship/lib/spaceship/client.rb:811:in `log_response'
     # ./spaceship/lib/spaceship/client.rb:846:in `block in send_request'
     # ./spaceship/lib/spaceship/client.rb:620:in `with_retry'
     # ./spaceship/lib/spaceship/client.rb:844:in `send_request'
     # ./spaceship/lib/spaceship/client.rb:688:in `request'
     # ./spaceship/lib/spaceship/tunes/tunes_client.rb:502:in `create_member!'
     # ./spaceship/lib/spaceship/tunes/members.rb:26:in `create!'
     # ./spaceship/spec/tunes/members_spec.rb:19:in `block (4 levels) in <top (required)>'

...

PR para referência: https://github.com/fastlane/fastlane/pull/15407

Observe que nossos testes não estão falhando no ruby ​​2.3 no macOS e no Ubuntu.

Comentários muito úteis

@janpio Suspeito que # 1039 deve corrigir os problemas com literais de string congelados no corpo.

Todos 15 comentários

Isso deve ser corrigido por esta linha em fastlane/fastlane#15403, acho que é um efeito colateral de um comentário mágico literal de string congelada em algum lugar

Edit: ~que não pode ser lançado até que lostisland/faraday_middleware#196 seja aprovado e lançado~ Edit2: é compatível com versões anteriores

Sim, o caminho a seguir é bem claro aqui - e vamos lançar um novo lançamento assim que possível.

Mas existem milhares de instalações do Fastlane (e outros softwares) quebradas no momento, e é por isso que achei importante relatar isso explicitamente novamente.

Existe uma maneira de fazer isso funcionar novamente em um 0.16.3?

Não estou em um lugar onde eu possa acessar um computador, mas de uma olhada superficial navegando pelos arquivos no meu telefone, parece-me que em algum lugar de Faraday estamos configurando o corpo da solicitação para uma string congelada. se pudermos encontrar onde esse corpo da solicitação está sendo definido como uma string congelada, isso deve corrigir o problema na via rápida

@janpio Suspeito que # 1039 deve corrigir os problemas com literais de string congelados no corpo.

Obrigado por esperar enquanto as correções apareceram. Obrigado BobbyMcWho por implementar!

Estou curioso para saber se havia _more_ strings de corpo mutável necessárias em outros adaptadores?

Dei uma olhada no projeto, nada mais se destaca imediatamente, a maioria dos literais congelados são mensagens de erro ou estão sendo usados ​​de maneiras que não esperariam que fossem mutáveis

Eu também experimentei isso ao usar faraday 0.16.2 com elasticsearch-transport (uma dependência de searchkick). Obrigado por colocar um patch em @BobbyMcWho!

@zspencer você pode ter que apontar para a ramificação 0.16.x em seu gemfile se precisar agora, até que os mantenedores tenham a chance de liberar 0.16.3

Obrigado! Eu já fiz isso. Eu queria ter certeza de que as pessoas que estavam enfrentando esse problema e adicionando palavras como searchkick e elasticsearch às suas consultas no Google encontrariam o problema. (e a correção!)

Olá a todos, sentimos muito por todas as interrupções causadas pelas versões v0.16.x.
Acabamos de executar um ROLLBACK RELEASE v0.17.0 que segue diretamente a última versão de trabalho v0.15.4.
Atualize para essa versão para resolver os problemas de compatibilidade com versões anteriores.
Mais informações aqui: https://github.com/lostisland/faraday/releases/tag/v0.17.0

Obrigado @iMacTia , isso também se aplica a faraday_middleware que até agora mantivemos na mesma versão que faraday ?

@janpio Desculpe, não tenho certeza se entendi. Este problema não deve afetar faraday_middleware de forma alguma, pois não lançamos nenhuma nova versão desde fevereiro.
Estou ciente deste PR que visa adicionar compatibilidade com 0.16, mas que não será mais lançado.

Assim que lançarmos o Faraday v1.0, também atualizaremos o Faraday Middleware e lançaremos um v1.0 compatível.

Por favor, deixe-me saber se você estava perguntando sobre outra coisa 😄

Mais ou menos - em nosso gemspec faraday_middleware foi comentado com in sync with faraday então eu queria saber se realmente precisa haver uma versão mais recente. Se não for esse o caso, continuaremos usando um mais antigo.

Faraday Middleware v0.13.1 estava funcionando bem com Faraday v0.15.4, então espero que funcione bem com v0.17.0. Vou acionar uma construção mestre só para ter certeza 👍

@janpio acionou https://travis-ci.org/lostisland/faraday_middleware/builds/595051325 , você pode ver nos logs que Faraday v0.17.0 é usado e todos os testes estão passando 🎉

Esta página foi útil?
0 / 5 - 0 avaliações