開発環境
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