Подтвердить что ты не робот

Как отладить приложение rails в докере с pry?

У меня есть приложение rails, работающее в контейнере докеров в среде разработки.

Когда я пытаюсь отлаживать его с размещением binding.pry где-то в коде и прикрепляться к контейнеру, я могу увидеть приглашение pry на выходе, но он не останавливается на нем, и я не могу с ним взаимодействовать как это было без контейнера докеров.

Итак, как мне отлаживать контейнерное приложение?

4b9b3361

Ответ 1

Если вы используете docker-compose, вы можете добавить эти флаги в docker-compose.yml:

app:
  tty: true
  stdin_open: true

И затем присоединитесь к вашему процессу с помощью docker attach. pry-rails работает здесь сейчас. Убедитесь, что less установлен на вашем контейнере для оптимального использования.

ср. https://github.com/docker/compose/issues/423#issuecomment-141995398

Ответ 3

У меня была такая же проблема, когда я работал с Пассажиром. Попробуйте изменить "pry-rails" в Gemfile на gem "pry-remote", который инициирует dRuby или распределенный протокол без зависимостей.

Если вы хотите остановить код при выполнении вызова "binding.remote_pry", а не "binding.pry"

Затем просто вызовите remote-pry в консоли, чтобы получить к нему доступ. Он должен работать одинаково. В тестовой среде обычный binding.pry работает отлично.

Ответ 4

Если вы не используете docker-compose, хотя вы можете просто запустить контейнер с опцией -it.

Например:

docker run -v /Users/adam/Documents/Rails/Blog/:/usr/src/app -p 3000:3000 -it blog