Railsコンソールを使ってコントローラのなかで色々試す

| コメント(0) | トラックバック(0)

Railsコンソールを使ってコントローラのなかで色々試す

Railsのコントローラの中ではいろいろなヘルパーメソッドが使えますが、コードを書く際にRailsコンソールを起動してトライアンドエラーで試してみたいことがよくあります。

今まではrails serverを起動してソースコードに一時的にdebuggerやbinding.pryを記述することで停止させていたのですが、一時的でもソースコードにすぐ不要になるコードを書くのは気持ち悪いものですし、うっかりcommit、pushしてしまうとかなりしょんぼりです。

ソースコードを書き換えずにRailコンソールから止める方法を考えてみました。

Rails consoleからdebuggerを起動してブレークポイントを設定する

ここまでは簡単です。

$ bundle exec rails c
> debugger
(rdb:1) b HomeController.index
(rdb:1) c
>

最後にc(ontinue)コマンドでデバッガから抜けてconsoleに戻っています。

コントローラを呼ぶリクエストを実行する

続いて目的のコントローラを実行します。Railsコンソールにはappヘルパーがあって、直接リクエストを呼ぶことができます。HomeController#indexがrootにルーティングされているなら、getメソッドを使って

> app.get '/'
Breakpoint 1 at HomeController:index
/path/to/repository/app/controllers/home_controller.rb:8
def index
(rdb:1) 

これで、Controller内のconsoleで実験できるようになりました。

コントローラの中でコンソールを使ってみる

例えばクッキーを操作するcookiesヘルパーを試してみます。

(rdb:1) p cookies.signed[:hoge] = ['a','b','c']
["a", "b", "c"]
(rdb:1) p cookies[:hoge]
"BAhbCEkiBmEGOgZFVEkiBmIGOwBUSSIGYwY7AFQ=--3dd62e6bec43666604256e897ca65b925d4bb7f1"
(rdb:1) p cookies.signed[:hoge]
["a", "b", "c"]
(rdb:1) 

この方法ならステージング環境のRailsコンソールでもいろいろな確認ができそうです。



トラックバック(0)

トラックバックURL: http://www.iwazer.com/mt/mt-tb.cgi/1255

コメントする

このブログ記事について

このページは、iwazerが2013年3月 5日 08:52に書いたブログ記事です。

ひとつ前のブログ記事は「Homebrewで複数のバージョンのパッケージをインストールして使い分ける」です。

次のブログ記事は「ownCloudをCentOS 6.2にセットアップして自分だけのDropbox」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。