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 扱いになって弾かれる(ことがある)

作成者以外のコメントは許可されていません