ブログ

読んで思い出す。忘れるために書く

URL にアクセスしたときのレスポンスコードをチェックする

やりたいこと

Ruby の標準ライブラリをつかって、URL の存在チェック (404 or not) をしたい

テストコードを書く

describe UrlAccessible do
  context 'When URL has exist' do
    it 'gets false (200 OK)' do
      url = 'http://www.example.com/'
      expect(UrlAccessible.not_found?(url)).to be_falsy
    end
  end

  context 'When URL has not exist' do
    it 'gets true (404 NG)' do
      url = 'http://www.example.com/foo/bar'
      expect(UrlAccessible.not_found?(url)).to be_truthy
    end
  end
end

実装コードを書く

require 'uri'
require 'net/http'

# Is that url accessible?
module UrlAccessible
  def self.not_found?(url_string)
    uri = ::URI.parse(url_string)
    response = ::Net::HTTP.get_response(uri)

    response.code.to_i.eql?(404)
  end
end

Links