質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1692閲覧

docker環境でbinding.pryを用いてデバッグする方法について

Harluz

総合スコア19

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/10/11 04:34

編集2021/01/03 02:32

railsにてpryを使用してデバッグしたい。
そんため、gemをインストールして任意の箇所にbinding.pryを記述し、実行するがコンソールが動作しなかった。
開発環境については、docker環境を採用していることから、コンテナ内のコンソールを確認する必要があると分かった。
このことから、docker環境でもpryを使用できるように修正した

dockercompose

1version: '3' 2services: 3 app: 4 build: 5 context: . 6 environment: 7 RAILS_ENV: development 8 MYSQL_ROOT_PASSWORD: db_root_password 9 MYSQL_USER: app 10 MYSQL_PASSWORD: password 11 MYSQL_DATABASE: my_app_development 12 DATABASE_HOST: db 13 command: bundle exec puma -C config/puma.rb 14---------------------↓新たに追加した2行↓ 15 stdin_open: true 16 tty: true 17--------------------- 18 volumes: 19 - .:/my_app 20 - public-data:/my_app/public 21 - tmp-data:/my_app/tmp 22 - log-data:/my_app/log 23 depends_on: 24 - db 25 db: 26 image: mysql:5.7 27 environment: 28 MYSQL_ROOT_PASSWORD: db_root_password 29 MYSQL_USER: app 30 MYSQL_PASSWORD: password 31 MYSQL_DATABASE: my_app_development 32 DATABASE_HOST: db 33 volumes: 34 - db-data:/var/lib/mysql 35 ports: 36 - "3316:3306" 37 web: 38 build: 39 context: containers/nginx 40 volumes: 41 - public-data:/my_app/public 42 - tmp-data:/my_app/tmp 43 ports: 44 - "3000:80" 45 depends_on: 46 - app 47volumes: 48 public-data: 49 tmp-data: 50 log-data: 51 db-data: 52

container

1CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2a43a90dcab74 my_app_web "/bin/sh -c '/usr/sb…" 42 minutes ago Up 42 minutes 0.0.0.0:3000->80/tcp my_app_web_1 300f15cac162f my_app_app "bundle exec puma -C…" 42 minutes ago Up 42 minutes my_app_app_1 400d88ac1c7a9 mysql:5.7 "docker-entrypoint.s…" 6 days ago Up 42 minutes 33060/tcp, 0.0.0.0:3316->3306/tcp my_app_db_1

usermodel

1class UsersController < ApplicationController 2 def index; end 3 4 def show 5 @user = User.find(params[:id]) 6 end 7 8 def new 9 @user = User.new 10 end 11 12 def create 13 @user = User.new(user_params) 14 if @user.save 15 binding.pry <------ここの状態を知りたい 16 flash[:success] = 'Welcome to the Theme Words' 17 redirect_to @user 18 else 19 render 'new' 20 end 21 end 22 23 def edit; end 24 25 def update; end 26 27 def destroy; end 28 29 private 30 31 def user_params 32 params.require(:user).permit(:name, :email, :image, :password, 33 :password_confirmation) 34 end 35end

terminal

1$ docker attach my_app_app_1

で動作するはずですが、ブラウザやコマンドにて リロードしても動作せず、デバッグできない状態です。
考えられる原因はなんでしょうか?
参考にしたサイトは以下
docker上でbinding.pryを実行する

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

デバッグにおいては、dcoker環境を諦めてホストで動作するようにしました。

追記ーーーーーーーーーーーーーーーーーーーーーー
docker環境で、binding.pryを挿入したままrspecを実行した結果、rspecのログの部分でデバッグモードに切り替わりました。この質問の後に色々と設定を変更はしておりましたが、一度rspecを走らせて動作するか確認してみるのも良いかもしれません。
また、rspecでデバッグモードに切り替わる利点としてブラウザでわざわざbinding.pryを挿入した箇所のアクションを再現しなくて良い点です。(そのアクションが実行されるテストコードを記述しなければいけませんが)
結論としては、今現在もdocker環境で通常のようにデバッグはできていません。
しかし、他の質問や回答をみると、できる場合とできない場合があるようです。何かの依存関係等が影響しているのかもしれませんが、エラーメッセージも出力されないため原因解明が困難と思います。

これも何かの参考になれば幸いです。

投稿2020/10/25 13:06

編集2021/01/03 02:30
Harluz

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問