Make Healthy Life

最近はSQLばっかり書いてるWebエンジニアの日記です。

pry-debuggerがとても便利

ruby on railsを勉強してる。
とりあえずrailsチュートリアル(Ruby on Rails チュートリアル:実例を使って Rails を学ぼう)をやってるのだけど、良いデバッグ方法を友人から教わった。

pry-byebugを使うと、binding.pryと記述した時点でpryが立ち上がる。
あとは変数の中身をみたり、いろいろ解析できる。

pryはirbの代わりとなるコンソール環境で、色付けされてたり、いろいろとirbよりいいらしい。
pryのインストールは以下を参考に。
Rubyistよ、irbを捨ててPryを使おう - TIM Labs

pry-byebugはGemfileにgemを記載。developmentだけじゃなくてtestにも使える。
deivid-rodriguez/pry-byebug · GitHub


rspec+Capybaraでテストしてて、エラーが出たんだけど理由がわからず、変数の中身を調べたかったときに重宝した。
ただCapybaraだと注意点があって、it "--" do -- end句の中でないと変数がセットされていないこと。
つまり以下コードだと、pryを起動したタイミングで変数がnilになる。

describe "signin" do
    let(:user) { FactoryGirl.create(:user) }
    before { visit signin_path(user) }
    
    binding.pry

    it { should have_link('Sign out') }
    it { should have_title(user.name) }    
end

$userを調べたいのであれば、it句の中にbiding.pryを記述する必要がある。

describe "signin" do
    let(:user) { FactoryGirl.create(:user) }
    before { visit signin_path(user) }
    
    it 'test' do
      binding.pry
    end

    it { should have_link('Sign out') }
    it { should have_title(user.name) }    
end

こんなことで2時間もはまってしまった。