Faraday: 0.16.2でのfastlaneの重大な変更

作成日 2019年09月29日  ·  15コメント  ·  ソース: lostisland/faraday

基本情報

  • ファラデーバージョン:0.16.2
  • Rubyバージョン:

    • Windows:ruby 2.4.6p354(2019-04-01リビジョン67394)[x64-mingw32]

    • Mac:Ruby 2.5

問題の説明

ファラデー0.16.2@BobbyMcWhoの修正があっても、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: https ://github.com/fastlane/fastlane/pull/15407

macOSとUbuntuのruby2.3ではテストが失敗しないことに注意してください。

最も参考になるコメント

@ janpio #1039は、本文のフリーズされた文字列リテラルの問題を修正する必要があると思います。

全てのコメント15件

これは、fastlane / fastlane#15403のこの行で修正する必要があります。これは、どこかでフリーズした文字列リテラルのマジックコメントの副作用だと思います。

編集:〜lostisland / faraday_middleware#196が承認されてリリースされるまでリリースできません〜編集2:下位互換性があります

はい、ここでの前進の道筋は非常に明確です。可能な限り早く、それを使って新しいリリースをカットします。

しかし、現在、何千ものFastlaneインストール(およびその他のソフトウェア)が壊れているため、これを再度明示的に報告することが重要だと思いました。

0.16.3でこれを再び機能させる方法はありますか?

私はコンピューターにアクセスできる場所にいませんが、携帯電話のファイルをざっと見てみると、ファラデーのどこかでリクエストの本文をフリーズした文字列に設定しているように見えます。 そのリクエスト本文がフリーズされた文字列に設定されている場所を見つけることができれば、高速レーンの問題を修正するはずです

@ janpio #1039は、本文のフリーズされた文字列リテラルの問題を修正する必要があると思います。

修正が行われている間、そこにぶら下がってくれてありがとう。 実装してくれたBobbyMcWhoに感謝します!

他のアダプターに必要な_more_可変ボディストリングがあったかどうか知りたいですか?

プロジェクトを調べましたが、すぐに目立つものはありません。ほとんどのフリーズリテラルはエラーメッセージであるか、変更可能であるとは思わない方法で使用されています。

また、elasticsearch-transport(searchkickの依存関係)でfaraday0.16.2を使用したときにもこれを経験しました。 @BobbyMcWhoにパッチを入れてくれてありがとう!

@zspencerメンテナが0.16.3をリリースする機会が得られるまで、今すぐ必要な場合は、gemfileの0.16.xブランチをポイントする必要があるかもしれません。

ありがとう! 私はすでにそうしました。 この問題に遭遇し、searchkickやelasticsearchなどの単語をGoogleクエリに追加している人が問題を見つけられるようにしたかったのです。 (そして修正!)

みなさん、こんにちは。v0.16.xリリースによって引き起こされたすべての混乱について本当に申し訳ありません。
最新の作業リリースv0.15.4に直接続くROLLBACKRELEASEv0.17.0を実行しました。
下位互換性の問題を解決するには、そのバージョンに更新してください。
詳細はこちら: https ://github.com/lostisland/faraday/releases/tag/v0.17.0

@iMacTiaに感謝します。これは、これまでfaradayと同じバージョンを維持していたfaraday_middlewareにも適用されますか?

@janpio申し訳ありませんが、わかりません。 この問題は、2月以降新しいバージョンをリリースしていないため、 faraday_middlewareにはまったく影響しません。
0.16との互換性を追加することを目的としたこのPRを知っていますが、これはもうリリースされません。

Faraday v1.0をリリースしたら、Faradayミドルウェアも更新し、互換性のあるv1.0をリリースします。

他にご不明な点がございましたら、お気軽にお問い合わせください😄

多かれ少なかれ-私たちのgemspecではfaraday_middlewarein sync with faradayでコメントされていたので、実際に新しいバージョンが必要かどうか疑問に思いました。 そうでない場合は、古いものを使用し続けます。

Faradayミドルウェアv0.13.1はFaradayv0.15.4で正常に動作していたので、v0.17.0でも正常に動作することを期待しています。 念のためマスタービルドをトリガーします👍

@janpioがトリガーしたhttps://travis-ci.org/lostisland/faraday_middleware/builds/595051325 、ログでFaraday v0.17.0が使用され、すべてのテストに合格していることがわかります🎉

このページは役に立ちましたか?
0 / 5 - 0 評価