1. snaka

    No comment

    snaka
Changes in body
Source | HTML | Preview
@@ -1,86 +1,95 @@
-元ネタ:[Three quick Rails console tips by Nick of 37signals](http://37signals.com/svn/posts/3176-three-quick-rails-console-tips)
-
+元ネタ:
+
+* [Three quick Rails console tips by Nick of 37signals](http://37signals.com/svn/posts/3176-three-quick-rails-console-tips)
+* [10 Rails console tricks](http://rors.org/2009/12/20/10-rails-console-tricks.html)
## 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"
```
##リクエストを投げてコントローラを呼び出してみる。
`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
+```