Debugowanie Merba w Netbeans

Opublikowane przez Jarosław Zabiełło Thu, 22 Jan 2009 03:30:00 GMT

Po paru godzinach walki z Netbeans, przeglądaniem źródeł, przekopywaniem list dyskusyjnych i zgłoszonym tickecie, w końcu udało mi się zmusić Merba do pracy z Netbeans. Mam też dobrą wiadomość, że Netbeans 7 (wersja trunk) w przyszłym tygodniu ma mieć dodane wsparcie do Merba (tworzenie projektów, debugowanie itp). Dla tych, co chcieliby już teraz móc debugować swoje projekty Merba w graficznym, ślicznym debugerze Netbeans, podaję instrukcję obsługi. :)

Krok 1: trzeba ściagnąć najnowszą wersję trunk ze strony http://bits.netbeans.org/download/trunk/nightly/latest/.

Od niedawna Netbeans posiada możliwość podpięcia swojego debugera do dowolnego kodu Ruby’ego za pomocą tzw. remote debugging (zobacz wpis w blogu Martin Krauskopfa z 11 listopada 2008 Remote Debugging: explore Ruby code easily). Właśnie tej metody użyjemy aby zmusić Netbeansa do pracy z Merbem.

Krok 2: w swoim pliku config/init.rb musisz ustawić opcję wymuszającą uruchamianie Merba tak jak Rails (trzeba wyłączyć forkowanie ładowania klas):

Merb::Config.use do |c|
  c[:fork_for_class_load] = false
  # ... reszta ustawień
end

Krok 3: musisz mieć zainstalowany gem ‘ruby-debug-ide’ i uruchomić zdalny nasłuch debuggera:

sudo gem install ruby-debug-ide

rdebug-ide -p 7000 `which merb`

Nie ma znaczenia jaki port ustawisz dla projektu Merba z poziomu konfiguracji projektu (prawy click na nazwę projekty -> Properties). Jeśli chcesz uruchomić Merba na porcie 3000 to po prostu odpal nasłuch debuggera przez podanie dodatkowych opcji:

rdebug-ide -p 7000 `which merb` -p 3000

Krok 4: Ustaw sobie w kodzie breakpoint, następnie podepnij debugger “menu -> Debug -> Attach Debugger…”

Nie używaj opcji “menu -> Debug -> Debug Main Project”. Nie ma ona tu znaczenia. Debugowanie odpala operacja przypisania debuggera.

Krok 5: Otwórz przeglądarke i uruchom projekt (http://localhost:4000)

Przełącz się na Netbeans. To wszystko.

Wbrew temu co piszą na Wiki do JRuby, nie ma potrzeby tworzenia pliku script/server zawierającego skopiowaną treść skryptu merb. Użytkownicy Windozy, którzy mają dostępu do komendy which, zamiast tego niech wpiszą po prostu merb, albo pełną ścieżkę do skryptu merb.

Tagi , ,  | 4 comments

Comments

  1. Avatar Jiima powiedział about 5 hours later:

    @JZ Masz małą literówkę w artykule – nie “Od niedawna Merb posiada możliwość podpięcia swojego debugera do dowolnego kodu Ruby’ego” tylko Netbeans ma taką możliwość.

    Aż się zdziwiłem, że Merb może służyć do debugowania czegokolwiek innego :)

  2. Avatar Jarosław Zabiełło powiedział about 5 hours later:

    @Jiima: Już poprawiłem. Tekst powstał b. późno w nocy.

  3. Avatar dmilith powiedział about 6 hours later:

    Metoda którą opisałem na wiki JRubiego jest jedną z możliwośći. Metoda którą opisałeś wymaga z kolei uruchamiania Merba metodą railsową (też czekam na NB 7 ze wsparciem Merba) i jest drugim workaroundem. Jak widać NB to bardzo elastyczne IDE. :}

  4. Avatar Jarosław Zabiełło powiedział 2 days later:

    @dmilith: właśnie problem w tym, że ta metoda z podstawieniem skryptu merba pod nazwą script/server (aby NB myślał że to Rails) w ogóle nie działa z nowym Merbem. To co opisałem wykorzystuje remote debugging dodany do NB7 i po prostu działa.

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz