LoginSignup
99

More than 3 years have passed since last update.

posted at

updated at

docker上でbinding.pryを実行する

開発環境

ruby 2.6.3  
rails 6.0.2

gemのインストール

gemflie
group :development do
  gem 'pry-byebug'
end

docker上で動かすためにdocker-composeに下記を追加

stdin_open: true
tty: true
  • この2文を追加でコンテナ内の標準入出力をローカルマシンのターミナルにアタッチする準備が整います。
  • docker-compose.yml
    web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    /////↓この2文を追加
    stdin_open: true
    tty: true
    ///////////////
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
    
  • stdin_open:標準入力への接続を表す。

  • tty:標準出力の接続を表す。

pry-byebugの使い方

  • 検証したいところにbinding.pryを書く。

docker上で動かす

ターミナル
# バックグラウンドで動かす
$ docker-compose up -d
ターミナル
# Railsが動いているコンテナのIDもしくはコンテナ名を調べます.
$ docker ps
ターミナル
#railsが動いてるコンテナのidをみる
$ docker attach コンテナのIDもしくはコンテナ名_1

これでbinding.pryが記述している場所になるとデバッグモードが起動します。

デバックモードを終了する

ターミナル
exit

Attach したコンテナから抜ける場合(デタッチする)

ターミナル
Ctrl+P, Ctrl+Q

より手短にアタッチする

ターミナル
docker-compose up -d && docker attach コンテナ名_1

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
What you can do with signing up
99