2012-01-16 19 views
7

Chcę użyć debuggera IDE Rubymine do debugowania procesu ruby ​​działającego w powłoce poleceń, ponieważ jest on odradzany, np. przez "konsolę szyn".Jak dołączyć debugera Rubymine IDE do procesu powłoki?

Mam wielki przebieg poza debuggerem podczas uruchamiania serwera WWW (z poziomu Rubymine) lub pakietów testowych (uruchamianych również z poziomu Rubymine).

Jeśli jednak proces nie zostanie rozpoczęty przez Rubymine, nie mam pojęcia, jak dołączyć debugger.

używam wersji 3.2.4 na Ubuntu rubymine z Sun Java 1.6.0_26, REE Ruby 1.8.7, a najnowsze perełki debug:

ruby-debug-base (0.10.4) 
ruby-debug-ide (0.4.17.beta8) 

myśli?

+1

Myślę, że w tytule pytania brakuje czasownika. –

+0

@DavidGrayson dzięki - masz rację. Naprawiony. –

Odpowiedz

3

Użyj Ruby Remote Debug typ konfiguracji w RubyMine. Szczegółowe informacje można znaleźć w oficjalnym numerze telefonu RubyMine documentation.

Zasadniczo uruchomić skrypt jak:

rdebug-ide --port <port number> -- script.rb 

a następnie podłączyć do określonego portu od rubymine debugger.

+0

Dzięki @CrazyCoder, który zadziałał, po tym, jak przejrzałem trochę moje zamieszanie: 1. Uruchom z wiersza poleceń polecenie rdebug-ide, np. w celu debugowania sesji powłoki 'rails console 'odczytałoby to:' rdebug-ide -port 1234 - console rails'. 2. W RubyMine użyj edytora konfiguracji uruchamiania i przeprowadź nową konfigurację Ruby Remote Debug przy użyciu tego samego portu (tutaj 1234), a zdalna ścieżka jest ustawiona na katalog roboczy, a następnie kliknij przycisk debugowania i spowoduje to utworzenie powłoki do zainicjowania, podczas gdy źródła mogą zostać przełamane w RubyMine. Bardzo doceniane! –

5

W ten sposób można zrobić to w Rails:

Po pierwsze, upewnij się, że masz rdebug-ide zainstalowane:

gem install ruby-debug-ide --platform=ruby 

Następnie uruchomić to w konsoli:

rdebug-ide --port 6778 -- /projects/your_rails_project/script/rails console 

lub dla tory 4.0+

rdebug-ide --port 6778 -- /projects/your_rails_project/bin/rails console 

Lub, jak @ Christopher wspomniał below, można przekazać parametr --host, jeśli chcesz debugować serwer nielokalny. (Przeczytaj poniżej jego komentarz dotyczący zastrzeżeń):

Spowoduje to poczekanie, aż klienci zdalnego debugowania się połączą.

  1. Kliknij Uruchom> Edytuj konfiguracjach rubymine następnie dodać „Ruby zdalnego debugowania” wystąpienie

  2. używać tego samego portu, jak powyżej 6778 (Jeżeli powyższy zmienić jeden, upewnij się, że porty dopasowywać)

  3. Folder główny Folder lokalny i korzeń są takie same,/projekty/your_rails_project

  4. Kliknij na Zastosuj i zamknij.

Następnie wybierz tę konfigurację z listy tuż obok przycisków uruchamiania i debugowania, a następnie kliknij przycisk debugowania. Daj mu kilka sekund, a konsola uruchomi "konsolę railsową", na której zawsze uruchamiasz "rdebug-ide"

+0

Dzięki, ale to już nie działa w Railsach 3.2, ponieważ 'konsola szynowa' uruchamia teraz osobny proces, a debuger IDE w RubyMine nie może jeszcze obsługiwać debugowania wieloprocesowego, chociaż podobno jest to uwzględnione w następnym wydaniu RubyMine . –

+0

Jestem debugowania aplikacji Rails 3.2.2 (Ruby 1.9.3p194) w tej chwili z RubyMine 4.0.3. Kiedy próbowałem uruchomić "boot.rb" (z rdebug-ide), proces zaczął się i zatrzymał od razu. Udało mi się, gdy użyłem powyższego polecenia. – Abdo

+0

Możesz uruchomić proces bez problemu, ale nie sądzę, że możesz go zatrzymać w punktach przerwania, ponieważ plik 'rails' uruchamia proces w tle, który nie jest monitorowany. A cały mój powód, aby uruchomić go w debugerze, to ustawić punkty przerwania. http://youtrack.jetbrains.com/issue/RUBY-10967 –

2

Naprawdę chcę opublikować coś tutaj, co jest bardzo trudne do znalezienia kompletnej odpowiedzi i zajęło mi to bardzo długi czas, aby dowiedzieć się.Są ludzie, którzy pytają, jak dołączyć zdalne debugowanie, aby odświeżyć pracownika i oto właściwy sposób, który działa w końcu dla mnie. Ten artykuł jest wysoki w wyszukiwarce Google i będzie łatwy do znalezienia.

Z SHELL na serwerze (dla mnie jest to mój laptop) wykonaj to z poziomu twojego katalogu głównego: rdebug-ide --port 1236 --dispatcher-port 26166 --host 0.0.0.0 bin/rake resque: work QUEUE = *

w rubymine IDE skonfigurować zdalne debugowanie z: Remote host: 127.0.0.1 Remote port: 1236 Remote głównej folderu: ścieżkę na serwerze do katalogu głównego serwisu Local Port: 26166 lokalnej ścieżce root: ścieżki na swoje stacja robocza do pliku głównego, w którym można ustawić punkty przerwania (w moim przypadku wszystkie lokalne, czyli cała 1 ścieżka i 1 kopia plików)

Uruchom serwer sieciowy w następujący sposób: s rails s

skonfiguruj punkt przerwania w swoim narzędziu Resque i spróbuj wykonać to, co potrzebujesz w swojej witrynie, aby dostać się do tego punktu przerwania.

1 uwaga - posiadanie klejnotu "wiosny" dało mi błędy i musiałem to skomentować.

Powiązane problemy