2012-03-04 12 views
17

Próbuję użyć majstra, aby uruchomić aplikację mojej szyny. Niestety mam problemy z połączeniem mojego IDE do debugowania.Jak debugować aplikację szyn (3.2) rozpoczęta przez majstra?

czytam here temat korzystania

Debugger.wait_connection = true 
Debugger.start_remote 

rozpoczęcie sesji zdalnego debugowania, ale to naprawdę nie wyszło.

Pytanie: Czy istnieje sposób debugowania aplikacji szyny (3.2) rozpoczętej przez majstra? Jeśli tak, jakie jest podejście?

Odpowiedz

28

Jeśli używasz kilku pracownikom pełne szyn środowiska można użyć następującego inicjator:

# Enabled debugger with foreman, see https://github.com/ddollar/foreman/issues/58 
if Rails.env.development? 
    require 'debugger' 
    Debugger.wait_connection = true 

    def find_available_port 
    server = TCPServer.new(nil, 0) 
    server.addr[1] 
    ensure 
    server.close if server 
    end 

    port = find_available_port 
    puts "Remote debugger on port #{port}" 
    Debugger.start_remote(nil, port) 
end 

A w dziennikach majster za będziesz w stanie znaleźć porty debugger za:

$ foreman start 
12:48:42 web.1  | started with pid 29916 
12:48:42 worker.1 | started with pid 29921 
12:48:44 web.1  | I, [2012-10-30T12:48:44.810464 #29916] INFO -- : listening on addr=0.0.0.0:5000 fd=10 
12:48:44 web.1  | I, [2012-10-30T12:48:44.810636 #29916] INFO -- : Refreshing Gem list 
12:48:47 web.1  | Remote debugger on port 59269 
12:48:48 worker.1 | Remote debugger on port 41301 

teraz uruchom debugger za pomocą:

rdebug -c -p [PORT] 
+0

Oczywiście potrzebujesz więcej uplayów. Dzięki tobie, w końcu * mam to do roboty. Dzięki! – Jimmy

+0

Dla kompletności, ostatnim krokiem jest połączenie się z debuggerem w osobnej powłoce z 'rails-c -p [PORT]' – Philipp

+1

@Philipp - Czy miałeś na myśli '' rdebug -c -p [PORT] '' '? Używanie polecenia '' 'rails''' nie działa dla mnie. –

3

Jednym ze sposobów jest zwykle wymaganie debuggera w pliku gem, a następnie w miarę potrzeby dodawanie do kodu normalnie debugger. Kiedy serwer trafi w tę linię, zatrzyma się, ale brygadzista nie będzie gadatliwy. W konsoli brygadera możesz ślepo wpisz irb, a dopiero wtedy zobaczysz monit. Zły UX, prawda?

Innym podejściem (augmentatywny) jest ogon dzienniki:

tail -f log/development.log 

Nadzieja to pomaga.

Powiązane problemy