Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
64
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

@hb5kz

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
64
Help us understand the problem. What are the problem?