この記事は GMOアドマーケティング Advent Calendar 2020 18日目の記事です。
こんにちは。GMOアドマーケティングのH.Tと申します。
RubyJardについてご紹介したいと思います。
Ruby Jardとは
RubyJardはbyebugをベースとして開発されたCUIで動作するRubyデバッガです。
RubyJardは公式サイトによると2020年の7月から開発が始まったとあり現在(2020年11月)最新バージョンがV0.3.1になっています。
開発が始まってまだ一年も経ってないようですが今後様々な機能の実装が予定されておりロードマップを確認できます。
普段の業務の開発環境ではbetter_errorsとbinding_of_callerで画面上でデバッグができるようになっているのですがbyebugやRubyJardのようにコンソール上で動くデバッガは使ったことがなかったので今回勉強を兼ねて試してみました。
早速使い方をご紹介します。
インストール
Gemfileからインストールする方法です。
1 |
gem 'ruby_jard', group: :development |
1 |
bundle install |
テスト環境にも入れたい場合はtestも追加します。
1 |
gem 'ruby_jard', group: [:development, :test] |
実行
プログラムを止めたい場所に「jard」というメソッドを埋め込んでプログラムを実行するとコンソールでデバッグ画面が開きます。
1 2 3 4 5 6 7 8 9 |
def index @q = current_user.tasks.ransack(params[:q]) jard # jardメソッドを差し込む。 @tasks = @q.result(distinct: true).page(params[:page]) respond_to do |format| format.html format.csv { send_data @tasks.generate_csv, filename: "tasks-#{Time.zone.now.strftime('%Y%m%d%S')}.csv"} end end |
※ソースコードはサンプルです。試す場合はご自身の環境でお願いいたします。
画面の見方
デフォルトではsource画面、backtrace画面、variable画面、thread画面の4つのセクションに分かれており、下部にREPLコンソールが現れます。
簡単ではありますがコマンドを紹介いたします。
フローコマンド(デバッグ用コマンド)
1 2 3 4 5 6 7 8 9 10 |
next #次の行へ進む step #現在の行のメソッド呼び出しやブロックにステップインする step-out #ステップインから戻る continue #次のブレイクポイントまで進む up #backtraceを遡る down #backtraceを進める frame #フレームを指定して進む。フレームとはbacktraceの行番号のことです list #画面表示のリセット skip #ブレイクポイントをスキップする exit #プログラムを停止する |
制御コマンド(画面表示の制御)
1 2 3 4 5 |
filter #ruby_jardにはapplicationモード、gemsモード、everyモード、souce_treeモードの四つがあり各々をフィルターする show #source画面、backtrace画面、variable画面、thread画面のいづれかを指定することで以下の「hide」で非表示にしたセクションを表示する hide #source画面、backtrace画面、variable画面、thread画面のいづれかを指定することで各セクションを非表示にする output #標準出力専用画面の表示 color-scheme #カラースキームの変更 |
使ってみた感想
公式サイトにも載っていたのですが競合しているgemがあるようでインストールするのに結構苦労したので現バージョンでは既存環境に組み込むのはちょっとまだ早いかなと思いました。
また、こちらも公式サイトに書いていたのですがv0.3の時点ではbyebugと機能はそれほど変わらないみたいです。
とはいえ、ものの数ヶ月でここまでできてCUI環境で開発する人にとっては今後の進化が楽しみなツールではないでしょうか。
以上簡単ですがRubyJardのご紹介でした。
明日は、@fiemonさんによる「広告掲載記事を解析してみた」です。
引き続き、GMOアドマーケティング Advent Calendar 2020 をお楽しみください!
■エンジニア採用ページ ~福利厚生や各種制度のご案内はこちら~
https://www.gmo-ap.jp/engineer/
■noteページ ~ブログや採用、イベント情報を公開中!~
https://note.gmo-ap.jp/