Gewusst wie: Debuggen eine rails-app im Andockfenster mit hebeln?
Ich habe eine rails-app läuft in einem docker-container in der Entwicklungsumgebung.
Wenn ich versuche zu Debuggen, die es mit der Unterbringung binding.pry
irgendwo im code und die Befestigung an den Behälter kann ich sehen, die pry
prompt in der Ausgabe aber nicht immer auf, und ich kann nicht mit ihm interagieren, wie es war, ohne docker-container.
So, wie debugge ich eine Container-app?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie docker-Komponieren, Sie können diese flags zu
docker-compose.yml
:Und dann bringen Sie zu Ihrem Prozess mit
docker attach project_app_1
.pry-rails
arbeitet jetzt hier. Sicherless
installiert ist, auf Ihre container für die optimale pry Erfahrung.vgl. https://github.com/docker/compose/issues/423#issuecomment-141995398
verwenden hebeln Sie haben, führen Sie es anders:
docker-compose run --service-ports web
Lesen Sie diesen Artikel für weitere Informationen:
http://blog.carbonfive.com/2015/03/17/docker-rails-docker-compose-together-in-your-development-workflow/
als Gabe Kopley beantworten, nehmen Sie Ihre rails-container aufgerufen wird
app
legenstdin_open
undtty
zutrue
:und schrieb ich ein bash-Skript, das Leben leichter zu machen, speichern Sie es auf
bin/dev
:vergessen Sie nicht, stellen Sie
dev
ausführbar durchchmod +x bin/dev
In Ihrem terminal, geben Sie
bin/dev
, es wird automatisch ausgeführt, bis der Behälter und befestigen Sie die app-container. wennbinding.pry
genannt, können Sie eingeben, um das terminal direkt.docker-compose run app rails c
parallel server. Sie dürfendocker attach $(docker-compose ps | grep app_1 | awk '{print $1}')
um es zu behebenIch hatte das gleiche Problem als ich mit hebeln im Personenverkehr. Versuchen Sie
"pry-rails"
im Gemfile zugem "pry-remote"
, die leiten einen dRuby, oder verteilte Protokoll ohne Abhängigkeiten.Wo Sie wollen, zu stoppen Sie den code in der Ausführung rufen Sie
"binding.remote_pry"
im Gegensatz zu"binding.pry"
Dann rufen Sie
remote-pry
in der Konsole darauf zugreifen. Es sollte die gleiche Arbeit. In Ihrer test-Umgebung nur die üblichenbinding.pry
funktioniert einwandfrei.Wenn Sie nicht
docker-compose
obwohl, können Sie einfach starten Sie den Behälter mit-it
option.Beispiel: