0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【rails】Docker環境にデバッグの導入

Posted at

はじめに

現在、Youtube apiを導入しており、そこでデバッグをするためのbinding.pryを環境に取り入れようとして、結局debugを取り入れた内容を備忘録として記載しておきます。

現状

これまでrailsを勉強してきて、binding.pryも利用してきました。ですので、今回も以下の流れで進めておりました。
 ①Gemfileに必要なものを追加
 ②bundle installを実行
 ③binding.pryを記述して実行
しかし、うまく機能しなかったので、原因を調べて解決するまでの流れをこちらに記載したいと思います。

流れ

原因

そもそもbinding.pryは、プログラムの実行を一時停止して、ターミナル上で対話的に操作できるデバッグツールです。なので通常の環境では、ターミナルとプロセスが直接接続されているため、簡単に機能します。
しかし、Dockerを使用している場合、作成されたコンテナ内のプロセスはローカルのターミナルから隔離されているため、機能しないとのことでした。
ですので、そちらの解決する方法を今回は紹介します。

解決

Gemの追加
Gemfile
- gem 'pry-rails'
+ gem 'debug' #これを追加

'debug Gem'は、Ruby公式の最新デバッガとして、標準的なデバッグツールとなりました。
特に Rails 7.0以降では、デフォルトで導入されているため、デバッグ環境のセットアップがより簡単になったそうです。

これから新しいプロジェクトを始める際は、binding.break を使って効率的にデバッグしましょう!

compose.yamlの追加
compose.yaml
    tty: true
    stdin_open: true

これらのコードを追記してください。
ttyは「擬似端末」を割り当てる設定とのこと。つまり、Dockerコンテナ内のターミナル操作を有効にするための記述です。
stdin_openは「標準入力」を開いたままにする設定です。
trueに設定することで、コンテナが実行中に標準入力を受け付けるようになります。ターミナルの-itコマンドと同じ役割を持つ。

コンテナの起動

デタッチモードでコンテナを起動させる。

ターミナル
docker-compose up -d

そこから、コンテナにアタッチすることで、デバッグを活用することができます。

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

これで準備は完了です。あとは、binding.breakなどを入れて必要に応じてデバッグを実行して下さい。
デバッグのコマンドなどはこちらのサイトを確認してみると、とても分かりやすいです!

さいごに

初めはbinding.pryを導入しようと色々調べたが、docker環境だと標準的に導入されたデバッグツールを使用することで、デバッグすることができました。これからもポートフォリオ完成に向けて進めていきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?