・前提環境
ruby '2.6.6' gem 'rails', '~> 6.0.2', '>= 6.0.2.1' gem 'faraday' gem 'faraday-cookie_jar' gem 'faraday_middleware' gem 'sidekiq'
・わからないこと
現在faradayにて同期的にcookie取得のためのリダイレクトフォローの処理を行っていたものを、sidekiqを導入し非同期的に処理が走るような実装に改修しようとしています。
@client = Faraday.new(url: 'https://www.test.jp') do |faraday| # ログインのためにFollow Redirectしています。 faraday.use FaradayMiddleware::FollowRedirects # リダイレクトフォロー中に返ってくるcookieが必要なため、cookie_jarを利用しています faraday.use :cookie_jar faraday.request :url_encoded faraday.response :raise_error faraday.adapter Faraday.default_adapter end
上記コードのリダイレクト処理(改修前は同期的に行っていた)の部分なのですがsidekiqを導入したところリダイレクトが返ってこなくなってしまいました。(同期的な実装の際は動いていた)
調査をしたところ
faraday.use FaradayMiddleware::FollowRedirects
このコードは同期リクエストでのみ動作するらしくこの部分の改修が必要であるということまで分かっています。
(下記サイトを参照しました)
www.rubydoc.info/gems/faraday_middleware/0.9.1/FaradayMiddleware/FollowRedirects
そこから調査を重ねたのですが代替案を見つけられず苦戦しています。また他のコードとの兼ね合いもあり、まるまるgemを変えたりといった事はできそうにありません。
なんとかsidekiqとfaradayを使ったまま非同期のリダイレクトフォローの処理に改修することはできないでしょうか?
知見のある方にご教授頂けると幸いです。
よろしくお願い致します。
あなたの回答
tips
プレビュー