Help us understand the problem. What is going on with this article?

rails console の tips

More than 1 year has passed since last update.

元ネタ:

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
snaka
VB,Java,.NET,Unity(C#)とやってきて、今はRubyときどきJavaScriptでサーバサイド中心。2020年は Go言語, TypeScript やっていきたい。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away