📲

Railsの`config/routes.rb`内に外部サイトにリダイレクトさせる処理を書く

2022/10/28に公開

意外と知らなかったので、調べたメモだけ備忘で残しておく。

内容

記述方法

  • こういう感じでredirectメソッドを使えば、routesファイルへの記述だけで外部サイトにリダイレクトさせられる
    • Controllerを作るまでもない単純なリダイレクトをしたい場合は使っても良いかも
get 'hoge' => redirect('https://example.com')

テスト

  • (当然だが)テストが実行されるたびに外部サイトにアクセスされるため、安易にテストを書かない方が良い
    • 逆に、テストしたい場合はちゃんとControllerや専用のクラスを用意してstubしたほうが良い
  • 調べたところpuffing-billyというgemを使えば外部サイトへの遷移をstubできそう
    • 一時的に必要なリダイレクト処理だったので、今回は使ってません
  • 以下READMEより抜粋
Before('@billy') do
  Capybara.current_driver = :poltergeist_billy
end

And /^a stub for google$/ do
  proxy.stub('http://www.google.com/').and_return(text: "I'm not Google!")
  visit 'http://www.google.com/'
  expect(page).to have_content("I'm not Google!")
end

https://github.com/oesmith/puffing-billy

Discussion