Rails
routes.rb
ルーティング
actionpack
direct

ルーティングの定義で外部URLも自然に書けるdirectメソッドの使い方

More than 1 year has passed since last update.
require "action_controller/railtie"
ActionPack::VERSION::STRING     # => "5.1.4"

Class.new(Rails::Application).routes.draw do
  direct :google do |options|
    "https://www.google.co.jp/?q=#{options[:query]}"
  end
end

include Rails.application.routes.url_helpers

url_for(:google)                   # => "https://www.google.co.jp/?q="
url_for([:google, query: "rails"]) # => "https://www.google.co.jp/?q=rails"
google_url                         # => "https://www.google.co.jp/?q="
google_url(query: "rails")         # => "https://www.google.co.jp/?q=rails"
google_path                        # => "/?q="
google_path(query: "rails")        # => "/?q=rails"

Rails4 まで routes.rb にはアプリ内だけのルーティングを書く感じでしたので、外部URLの場合はどこに書いていいか悩ましいところでした。Rails5 からは routes.rb に集約できるようになっていました。