元ネタ:
urlヘルパーが生成するpath/urlを確認してみる。
app
オブジェクトからURLヘルパーを呼び出すことができる。
[1] pry(main)> app.api_hoge_path
=> "/api/hoge"
[2] pry(main)> app.api_hoge_url
=> "http://www.example.com/api/hoge"
その他参考: Rails でリンクパスを生成する方法色々・・とRails console で 生成される path を確認したい時
##リクエストを投げてコントローラを呼び出してみる。
app
オブジェクトを使うと簡単にリクエストを投げてコントローラを呼び出すこともできる。
[3] pry(main)> app.get "http://localhost:3000/api/hoge"
=> 200
[4] pry(main)> app.response.body
=> "{\"response\":\"hoge\"}"
view ヘルパーを呼び出す
helper
オブジェクトから View ヘルパーを呼び出すことができる。
[8] pry(main)> helper.truncate("Testing", length: 6)
=> "Tes..."
[9] pry(main)> helper.link_to "home", app.root_path
=> "<a href=\"/\">home</a>"
インスタンス変数に値を設定する
以下のように ヘルパーメソッドの中でインスタンス変数を参照している場合、Object#instance_variable_set
を使ってインスタンス変数に値を設定することができる。
以下のようなヘルパーがあったとして
def say_hello
"hello, #{@name}"
end
@nameに値を設定するには以下のとおり
[99] pry(main)> helper.instance_variable_set :@name, "hoge"
これで 上記ヘルパーメソッドを呼び出すと
[99] pry(main)> helper.say_hello
=> "hello, hoge"
という結果が得られる。
params 変数に値をセットする
以下のようにヘルパーメソッドの中で params 変数を参照している場合、普通にhelper.say_goodbye
とメソッドを呼び出すと、params 変数の中身が空のため正しく動作しない。
def say_goodbye
"goobye, #{params[:name]}"
end
そのような場合、OpenStruct クラスを使ってコントローラを偽装することで params 変数に値を設定することができる。
[2] pry(main)> helper.controller = OpenStruct.new(:params => { :name => "hoge" })
=> #<OpenStruct params={:name=>"hoge"}>
[3] pry(main)> helper.say_goodbye
=> "goodbye, hoge"
sandboxモード
exit すると DBへの変更がロールバックされる
$ rails c --sandbox