Open3
Rails runnerなどからcontrollerのアクションを実行する
user = User.first
Warden.test_mode!
Warden.on_next_request do |proxy|
scope = Devise::Mapping.find_scope!(user)
opts = { event: :authentication, scope: scope }
proxy.set_user(user, opts)
end
ApplicationController.allow_forgery_protection = false
s = ActionDispatch::Integration::Session.new(Rails.application)
status = s.get 'http://x.y.localhost'
puts status # => 200
puts s.response.body
getにpathではなくurlを渡しているのがポイント。そうしないと example.com 扱いになって弾かれる(ことがある)