プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Ruby on Rails
  • 【Ruby on Rails】デバッグの仕方(Docker上のデバックも)
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】デバッグの仕方(Docker上のデバックも)

12.21

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Railsでデバッグをしたい場合はbyebugというツールを使う方法があります。(Visual Studio Codeを使っている場合はステップ実行ができるのでそちらを使った方が良いでしょう。)

Gemfileにはデフォルトで「byebug」が開発環境だけ読み込まれる設定になっています。

1
2
3
4
group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

byebugの使い方

ブレークポイントを貼りプログラムを止めて変数の中身を確認する。

コントローラやモデルとかでプログラムを止めたい任意の箇所で下記の記述をします。

1
byebug

実行するとbyebugを記述した箇所で処理が止まるので下記のようにコンソール上で変数を打つと変数の中身を確認することが可能です。(下記例では画面から送られてきたparamsという変数の中身を確認しています。)

byebugのコマンド

コマンド 処理内容
n ステップオーバー
s ステップイン
c 実行継続

byebugを終了する。

下記コマンドを実行するとbyebugは終了します。

1
quit

その際はRailsサーバも終了するので注意が必要です。

Docker上のRailsデバック

docker-compose.yml

「tty: true」と「stdin_open: true」の設定を追加します。

1
2
3
4
5
6
7
8
9
10
11
12
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
    ports:
      - 3000:3000
    depends_on:
      - db
    tty: true ★
    stdin_open: true ★

次に下記コマンドを実行してWebサーバーのコンテナ名(name)を取得します。

1
docker ps

Railsのコードに「byebug」を埋め込んだら下記コマンドを実行します。

1
docker attach Webサーバーのコンテナ名(docker psで取得)

これでデバックすることが可能になります。なおattach状態を解除したい場合は下記のキーを押します。

1
Ctrlキー + p + q

いちいち調べてattachするのは面倒だと思うので、毎回docker psにてコンテナ名を調べるのは面倒だと思うので、下記の起動方法をすれば楽にアタッチすることが可能です。(内部的な動きとしては、アタッチしてコンテナを起動します。)

1
./bin/docker-compose-attach web(Webサーバーのコンテナ名)

スポンサーリンク
  • 2019 12.21
  • miyabisan2
  • コメントを書く
  • Ruby on Rails
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 06.18

    【Ruby on Rails】「コントローラー」の基本、実装方法、より良い設計方法

  2. 2019 12.03

    【Ruby on Rails】アセットパイプラインについて

  3. 2019 11.24

    【セキュリティ】CSRF(クロスサイトリクエストフォージェリ)とは?

  4. 2022 10.30

    【Rails】「rubocop」の導入、ソースレビューのポイントなど

  5. 2020 11.17

    【Ruby on Rails】「Enum」について

  6. 2019 12.30

    【Rspec】「Controller Spec(コントローラスペック)」の基本

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby】条件分岐/繰り返し処理

【Heroku】概要やRailsをアップロードする手順

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー