読者です 読者をやめる 読者になる 読者になる

よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

script/consoleでroutesのpathやurlを表示する方法

script/consoleでroutesで定義したurlやpathを出力してみたい場合、普通にusers_urlなどを入力してもNameErrorとなってしまいますが、どうにかして表示させたい場合は下記の2つのやり方があります。

■方法(1)
script/consoleを起動すると、標準でActionController::Integration::Sessionクラスのappオブジェクトを利用することができます。

$script/console

app.users_path
=> "/users"
app.users_url
=> "http://www.example.com/users"

URLを表示する場合は、デフォルトでホスト情報にwww.example.comが設定されているので、ホスト情報も変更したい場合は以下のようにします。

app.host
=> "www.example.com"
app.host = "www.sonicgarden.jp"
=> "www.sonicgarden.jp"
app.users_url
=> "http://www.sonicgarden.jp/users"

■方法(2)
appオブジェクトを利用しない場合は、UrlWriterをincludeすればOKです。

$script/console

include ActionController::UrlWriter
=> Object
users_path
=> “/users”
default_url_options[:host] = "www.sonicgarden.jp"
=> “www.sonicgarden.jp”
users_url
=> "http://www.sonicgarden.jp/users"

※ urlを表示する場合はdefault_url_options[:host]を設定しておかないとRuntimeErrorとなってしまいます。

利用頻度は低いかもしれませんが、何かあったときすぐに対応できるように覚えておいて損はしないかと思います。

こちらも合わせてどうぞ。
script/consoleでhelperのメソッドを実行する方法 - よかろうもん!