2014-04-01 53 views

Odpowiedz

32

musiałem poskładać informacje z wielu różnych źródeł w celu osiągnięcia powyższego, więc pomyślałem, że to skonsolidowany instrukcji tutaj dla wygody:

Oto kroki:

  1. W config/środowiskach/development.rb dodać:

    require 'byebug' 
    
    #set in your .powconfig 
    if ENV['RUBY_DEBUG_PORT'] 
        Byebug.start_server 'localhost', ENV['RUBY_DEBUG_PORT'].to_i 
    else 
        Byebug.start_server 'localhost' 
    end 
    
  2. Restart Pow i odwiedzić yourapp.dev

  3. uruchom następujące:

    [bundle exec] byebug -R localhost:<port_you_defined_in_pow_config> 
    

Powinieneś zobaczyć udane połączenie ze zdalną instancją.

+0

Dziękuję za to. Mogę połączyć się z serwerem, ale moje punkty przerwania się nie łamią. Jakieś pomysły? Miejsca do rozpoczęcia? Dzięki! –

+0

Czy używasz pow? Jeśli tak, spróbuj pierwszej odpowiedzi w http: // stackoverflow.com/questions/8996498/ruby-debug-with-pow-breakpoints-never-hit –

+2

Używam pow. Próbowałem odpowiedzi, bez powodzenia. Siedzę na terminalu z 'Connecting to byebug server localhost: 12346. Connected. "I mnóstwo" byebug "wywołań w moim kodzie, ale bez zerwania! W tej chwili nie mogę sobie pozwolić - jeśli masz jakieś inne pomysły, jestem uszy! W przeciwnym razie, dziękuję w każdym razie za pomoc! –

34

Odpowiedź Józefa była dobra, ale myląca na kilka małych sposobów. Umieszcza uruchamianie serwera byebug w config/environments/development.rb, kiedy byłoby lepiej w inicjalizatorze. Dodatkowo eksport zmiennej środowiskowej następuje w .powenv lub .powrc. W ten sposób udało mi się go uruchomić.

W swojej gemfile:

gem 'byebug' 

W wierszu poleceń:

bundle install 

Jeśli używasz Pow, dodać następujące .powenv:

export BYEBUGPORT=3001 

Jeśli używasz inne struktury (np. tylko foreman), może być konieczna modyfikacja .env zamiast tego.

W config/initializers/byebug.rb

if Rails.env.development? and ENV['BYEBUGPORT'] 
    require 'byebug/core' 
    Byebug.start_server 'localhost', ENV['BYEBUGPORT'].to_i 
end 

I wreszcie w wierszu poleceń: serwer byebug należy rozpocząć

touch tmp/restart.txt 

Po przejściu do witryny pow. W linii poleceń możesz teraz:

[bundle exec] byebug -R localhost:3001 
+1

naprawdę dobrze zrobione. Działało dokładnie tak, jak to udokumentowałeś. –

+1

Yup, postępuj zgodnie z instrukcjami i działa jak urok. Dziękuję Nicholas! –

+0

Pamiętaj, że "touch tmp/restart.txt" może nie być potrzebny, w zależności od serwera aplikacji. Wymagane dla Pasażera w produkcji, zwykle nie jest potrzebne w rozwoju na żadnym serwerze aplikacji. –