Faraday: Критические изменения для полосы обгона в 0.16.2

Созданный на 29 сент. 2019  ·  15Комментарии  ·  Источник: lostisland/faraday

Основная информация

  • Версия Фарадея: 0.16.2
  • Рубиновая версия:

    • Windows: ruby ​​2.4.6p354 (версия 67394 1 апреля 2019 г.) [x64-mingw32]

    • Mac: Руби 2.5

Описание проблемы

Даже с Faraday 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

Обратите внимание, что наши тесты не дают сбоев на ruby ​​2.3 в macOS и Ubuntu.

Самый полезный комментарий

@janpio Я подозреваю, что # 1039 должен исправить проблемы с замороженными строковыми литералами в теле.

Все 15 Комментарий

Это должно быть исправлено этой строкой в fastlane/fastlane#15403, я думаю, что это побочный эффект магического комментария замороженной строки где-то

Редактировать: ~ это не может быть выпущено до тех пор, пока Lostisland/faraday_middleware # 196 не будет одобрен и выпущен ~ Редактировать 2: это обратно совместимо

Да, путь вперед здесь совершенно ясен — и мы выпустим новый релиз, как только это станет возможным.

Но сейчас тысячи установок Fastlane (и другого программного обеспечения) сломаны, поэтому я подумал, что важно снова явно сообщить об этом.

Есть ли способ сделать это снова в версии 0.16.3?

Я не в том месте, где я могу добраться до компьютера, но при беглом просмотре файлов на моем телефоне мне кажется, что где-то в Фараде мы устанавливаем тело запроса на замороженную строку. если мы сможем найти, где для этого тела запроса устанавливается замороженная строка, это должно решить проблему в быстрой полосе.

@janpio Я подозреваю, что # 1039 должен исправить проблемы с замороженными строковыми литералами в теле.

Спасибо, что продержались там, пока не появились исправления. Спасибо BobbyMcWho за реализацию!

Мне любопытно, нужны ли какие-либо _more_ изменяемые строки тела в других адаптерах?

Я просмотрел проект, больше ничего не бросается в глаза, большинство замороженных литералов являются сообщениями об ошибках или используются способами, которые не предполагают, что они будут изменчивыми.

Я также испытал это при использовании faraday 0.16.2 с elasticsearch-transport (зависимость от searchkick). Спасибо за исправление @BobbyMcWho!

@zspencer вам, возможно, придется указать на ветку 0.16.x в вашем gemfile, если она вам нужна прямо сейчас, пока у сопровождающих не будет возможности выпустить 0.16.3

Спасибо! Я уже сделал это. Я хотел убедиться, что люди, сталкивающиеся с этой проблемой и добавляющие такие слова, как searchkick и elasticsearch, в свои запросы Google, найдут проблему. (и исправление!)

Привет всем, мы очень сожалеем о всех сбоях, вызванных выпусками v0.16.x.
Мы только что выполнили ROLLBACK RELEASE v0.17.0, который непосредственно следует за последней рабочей версией v0.15.4.
Пожалуйста, обновитесь до этой версии, чтобы решить проблемы обратной совместимости.
Подробнее здесь: https://github.com/lostisland/faraday/releases/tag/v0.17.0

Спасибо @iMacTia , будет ли это также относиться к faraday_middleware , которые мы до сих пор сохраняли в той же версии, что и faraday ?

@janpio Прости, я не уверен, что понял. Эта проблема не должна каким-либо образом повлиять на faraday_middleware , так как мы не выпускали ни одной новой версии с февраля.
Я знаю об этом PR , целью которого является добавление совместимости с 0.16, но он больше не будет выпущен.

Как только мы выпустим Faraday v1.0, мы также обновим промежуточное ПО Faraday и выпустим совместимую версию v1.0.

Пожалуйста, дайте мне знать, если вы спрашивали о чем-то другом 😄

Более или менее - в нашей спецификации gemspec faraday_middleware был прокомментирован как in sync with faraday , поэтому мне было интересно, действительно ли нужна более новая версия. Если это не так, мы просто продолжим использовать более старый.

Промежуточное ПО Faraday v0.13.1 отлично работало с Faraday v0.15.4, поэтому я ожидаю, что оно будет работать и с v0.17.0. Я запущу мастер-сборку на всякий случай 👍

@janpio сработал https://travis-ci.org/lostisland/faraday_middleware/builds/595051325 , в логах видно, что используется Faraday v0.17.0 и все тесты проходят 🎉

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

mattmill30 picture mattmill30  ·  4Комментарии

iMacTia picture iMacTia  ·  3Комментарии

QuinnWilton picture QuinnWilton  ·  4Комментарии

ryanbyon picture ryanbyon  ·  3Комментарии

jeffb-stell picture jeffb-stell  ·  5Комментарии