パラボラアンテナと星の日記

あることないこと

rails basic認証でもcapybaraのテストを書きたい

遊びで書いた醜いコードをさらすシリーズ2

class ApplicationController < ActionController::Base
  before_action :auth, except: %i(なんかhttpで来て欲しいアクション), if: ->{ Rails.env.production? }

  private

  def auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV['BASIC_AUTH_USERNAME'] && password == ENV['BASIC_AUTH_PASSWORD']
    end
  end
end

きっとcapybaraでもテストできるだろう、けどそれがめんどいのでRails.envで判定してしまう

1人しか使わないようなWEBアプリ(Todoアプリとか)はhttps+Basic認証で十分だったりする。

herokuはドメイン名とかにこだわらなければデフォルトでhttpsが動くので、
DB使って苦労して認証機能をつくらずとも楽にhttps+basic認証を提供できる