Closed6

ruby 学習メモ: Faraday を使ってみる

nu-uuanu-uua

ruby を勉強中。

下記のようなコードに出会った。

def fetch_body(url)
  uri = URI.parse(url)
  response = Net::HTTP.get_response(uri)

  uri = URI.parse(response['location'])
  response = Net::HTTP.get_response(uri)

  response.body
end

ruby は全然わからなく初心者レベルだが、
それでもこのコードには改善点があり、もっと上手く書けそうと思ったのでトライ。

nu-uuanu-uua

HTTPリクエストを2回しているのは不思議。
リダイレクトする前提で書いていたっぽい。

  uri = URI.parse(response['location'])
  response = Net::HTTP.get_response(uri)
nu-uuanu-uua

Gemfile に追加

gem "faraday"
gem "faraday_middleware"

で、取り込み

bundle install
nu-uuanu-uua

さっきのコードをリファクタリング。

def fetch_body(url)
  conn = Faraday.new do |f|
    f.response :follow_redirects
  end

  response = conn.get(url)  
  response.body
end

動いた。終わり。
ステータスコードのチェックをした方がいいが、勉強がてら書いているだけなのでこれでいい。

このスクラップは10日前にクローズされました