Logo
  • DoRubyとは
  • お問い合わせ
  • Ruby/Rails
  • Web開発
  • Webマーケティング
  • アピリッツ
  • ライフハック
  • ゲーム制作/開発
  • アプリ開発
  • 新しいカテゴリ
  • Railsの小技
  • Rubyの小技
  • Gemの紹介
  • ActiveRecord
  • 初心者向け
  • Java/Scalaテク
  • Unixのあれこれ
  • データベース
  • スマホ開発
  • HTML/CSS/JavaScript
  • デザイン製作
  • インフラ
  • クラウド
  • セキュリティ
  • エディタ
  • バージョン管理
  • その他
  • python
  • アクセス解析
  • Googleアナリティクス
  • Googleデータスタジオ
  • Web広告
  • SEO
  • UI/UX
  • ソーシャルメディア
  • EC開発
  • Webシステム開発
  • コンサルティング
  • Webデザイン
  • ブロックチェーン
  • ゲーム紹介
  • アプリ紹介
  • ASP
  • 風景
  • パソコン
  • ツール
  • ガジェット
  • 仕事術
  • 健康
  • 生活
  • 書評
  • Excel(エクセル)
  • PowerPoint(パワーポイント)
  • ゲームプランニング
  • SpriteStudio
  • マスターデータ入力/作成
  • Unity
  • キャラクターデザイン
  • ゲームシナリオ
  • レベルデザイン
  • ゲーム分析
  • 3DCG
  • イラスト制作
  • CG/アニメーション
      1. ホーム
      2. Ruby/Rails
      3. Railsの小技
      4. Rails デバッグの為にpryを使いこなす
      • 2018-02-14
        • カテゴリ:
        • Railsの小技
        • タグ:
        • Rails
        • Pry
        • デバッグ

      Rails デバッグの為にpryを使いこなす

      この記事は公開から1年以上が経過しています。情報が古い可能性がありますのでご注意ください。
      78b66bed98465b592c5037bf614cee3e

      普段どうやってデバッグしてますか?
      単純にプリントデバッグでもいいですが、今回はpryを使って快適なデバッグを目指します。

      前回に引き続き、pryシリーズ第二弾。
      今回は、目玉とも言えるデバッグでの使い方を紹介します。

      導入

      下記をGemfileに記述して bundle install

      gem 'pry-byebug', group: :development
      

      ブレークポイント

      デバッグをしたい箇所(ブレークポイント)に下記を記述するだけです。

      binding.pry
      

      view内では以下のように記述します。

      <% binding.pry %>
      

      使い方

      ブレークポイントの部分でpryコンソールが立ち上がります。

      From: /app/app/controllers/admin/home_controller.rb @ line 10 Admin::HomeController#index:
      
           4: def index
           5:
           6:   array = ['hot', 'dog']
           7:
           8:   binding.pry
           9:
       => 10:   hogehoge = 'dog'
          11:   fugafuga = 'cat'
          12:
          13:   set_user
          14: end
      
      [1] pry(#<Admin::HomeController>)> array
      => ["hot", "dog"]
      [2] pry(#<Admin::HomeController>)> hogehoge
      => nil
      

      ステップ実行

      特定の処理のピンポイントで止めることができます。
      ステップ実行に使えるコマンドを順に紹介します。

      next

      次の行へ

        [1] pry(#<Admin::HomeController>)> next
            .
            .
            10:   hogehoge = 'dog'
         => 11:   fugafuga = 'cat'
            12:
            13:   set_user
      

      step

      次の行またはメソッドの内部へ

        [1] pry(#<Admin::HomeController>)> step
            25: def set_user
         => 26:   @user = current_user
            27: end
      

      finish

      現在のメソッドを抜ける

        [1] pry(#<Admin::HomeController>)> finish
        From: /usr/local/bundle/gems/actionpack-5.0.4/lib/action_controller/metal/basic_implicit_render.rb @ line 4 ActionController::BasicImplicitRender#send_action:
      
            3: def send_action(method, *args)
         => 4:   super.tap { default_render unless performed? }
            5: end
      

      exit, continue, (Ctrl + D)

      次のブレークポイントがある場合は、そこまで実行
      なければpry終了

        [1] pry(#<Admin::HomeController>)> exit
           4: def index
           5:
           6:   array = ['hot', 'dog']
           7:
           8:   binding.pry
           9:
          10:   hogehoge = 'dog'
          11:   fugafuga = 'cat'
          12:
          13:   set_user
          14:   binding.pry
       => 15: end
      

      !!!

      強制終了(プログラムも実行しない)
      (即時にやめたい時)
      次のブレークポイントがあっても終了

        SystemExit at /admin
          exit
      

      というエラー画面になります

      まとめ

      Model, View, Controller どこでも任意の場所でデバッグを容易にしてくれます。

      一行ごと追っていけたり、メソッドの内部に入れたりするので
      Railsの開発にはほぼマストだと思います。

      今までなんとなくで使っていましたが、ちゃんと調べると知らなかったコマンド等があり勉強になりました。

      参考

      前回記事
      pry-byebugでrubyをデバッグする Qiita
      https://github.com/deivid-rodriguez/pry-byebug


      • 825 views
        • Tweet
        • このエントリーをはてなブックマークに追加

      この記事を書いた人
      25e10f1188eae3506034ce87c74255be?default=mm&size=80
      chop*3
      新卒ですが、頑張りますよ

      「いいね!」するとDoRubyの最新記事を受け取ることができます。

      Facebook

      Twitterから最新記事を受け取るならこちら

      Follow @doruby

      Feedlyから最新記事を受け取るならこちら

      follow us in feedly

      おすすめの記事
      • 502 views
      • 2015-10-01
      RailsのViewを自在にカスタマイズするための「Cosme」gem
      • 1,640 views
      • 2016-07-27
      リニューアルをしたDoRubyの3つの目的
      • 685 views
      • 2016-07-31
      carrierwaveとfogでRiak CSへの画像アップロードを実装する
      • 1,103 views
      • 2017-04-24
      アピリッツの新卒合宿2017

      カテゴリ

      Icon category 1Ruby/RailsList elementRailsの小技List elementRubyの小技List elementGemの紹介List elementActiveRecordList element初心者向けIcon category 4Web開発List elementJava/ScalaテクList elementUnixのあれこれList elementデータベースList elementスマホ開発List elementHTML/CSS/JavaScriptList elementデザイン製作List elementインフラList elementクラウドList elementセキュリティList elementエディタList elementバージョン管理List elementその他List elementpythonIcon category 5WebマーケティングList elementアクセス解析List elementGoogleアナリティクスList elementGoogleデータスタジオList elementWeb広告List elementSEOList elementUI/UXList elementソーシャルメディアIcon category 6アピリッツList elementEC開発List elementWebシステム開発List elementコンサルティングList elementWebデザインList elementブロックチェーンList elementゲーム紹介List elementアプリ紹介List elementASPList element風景Icon category 7ライフハックList elementパソコンList elementツールList elementガジェットList element仕事術List element健康List element生活List element書評List elementExcel(エクセル)List elementPowerPoint(パワーポイント)List elementゲーム制作/開発List elementゲームプランニングList elementSpriteStudioList elementマスターデータ入力/作成List elementUnityList elementキャラクターデザインList elementゲームシナリオList elementレベルデザインList elementゲーム分析List element3DCGList elementイラスト制作List elementCG/アニメーションList elementアプリ開発List element新しいカテゴリ

        人気の記事
        • 27 views
        • 2019-02-12
        カスタマーへの活用促進とヘルススコア
        最近の記事
        • 27 views
        • 2019-02-12
        カスタマーへの活用促進とヘルススコア
        • 115 views
        • 2019-01-08
        日本でもっとカスタマーサクセスを盛り上げよう!!の年末イベント
        • 177 views
        • 2018-12-10
        【Rails】I18nの言語データをDBから取得 / キャッシュ使用【i18n/i18n-active_record】
        • 165 views
        • 2018-12-10
        【Rails】I18nの言語データをDBから取得【i18n/i18n-active_record】
        • 148 views
        • 2018-11-12
        【jQuery】開閉パネルを最初から開いた状態にする
        Facebook

          サイト情報
          • DoRubyとは
          • 株式会社アピリッツ

          企業情報
          • 会社概要
          • 採用情報
          • お問い合わせ

          ソーシャルアカウント
          • Facebook
          • Twitter
          サービス製品
          • コミュニティサイト
          • Android向け ECアプリ制作パッケージ「ポケコマ」
          • レコメンドASP
          • サイト内検索ASP「Advantage Search」
          • オープンソースECサイト構築パッケージ「エレコマ」

          • 受注・在庫・商品情報一元管理「モールコネクター」
          • セキュリティ診断サービス
          • 戦略的EC画面設計・制作サービス
          • Googleアナリティクスセミナー
          • アクセス解析コンサルティング
          • SEOコンサルティング

          Copyright © Appirits All Rights Reserved.