2012-01-25 27 views
8

Tôi đang cố gắng sử dụng tính năng gỡ lỗi ruby ​​với Pow. Rails 3 ứng dụng.ruby-debug với Pow - breakpoints không bao giờ trúng

Tôi đã làm tất cả mọi thứ ở đây: https://gist.github.com/1098830

Tôi đã khởi động lại máy chủ và máy nhiều lần. Tôi có thể nhận được rdebug để kết nối:

→ rdebug -c 
Connected. 

nhưng không bao giờ dừng lại ở điểm ngắt.

Bất kỳ ý tưởng nào có thể xảy ra? Tôi đã nhận được nó để đạt một vài điểm ngắt vài giờ trước, và không phải từ đó.

khiển

def index 
    debugger 
    ... 
    end 

Gemfile

gem 'ruby-debug19', :require => 'ruby-debug' 

development.rb

EG::Application.configure do 
    ... 
    require 'ruby-debug' 
    Debugger.start_remote 
    Debugger.settings[:autoeval] = true 
    puts "=> Debugger enabled" 
end 
+0

hoạt động mà không có pow? bạn đang sử dụng phiên bản ruby ​​nào? –

+0

có, nó hoạt động dưới webrick và hành khách. ruby 1.9.2p290 – 99miles

Trả lời

2

Cập nhật tháng chín '12

tôi chuyển sang đá quý debugger - một ngã ba của ruby-debug19 với sự hỗ trợ tốt hơn cho ruby ​​1.9.2/3

Điều này cũng cho phép đơn giản hóa cấu hình để gỡ lỗi từ xa trong development.rb. Tôi nhấn breakpoint mỗi lần duy nhất và không có quá trình treo.

require 'debugger' 
Debugger.start_remote 

gốc trả lời

Cố gắng tạo điều kiện cho wait_connection (và khởi động lại pow)

require 'ruby-debug' 
Debugger.wait_connection = true 
Debugger.start_remote 
Debugger.settings[:autoeval] = true 
puts "=> Debugger enabled" 

nguồn tải lại cũng là tốt đẹp: Debugger.settings[:reload_source_on_change] = true

+2

"Debugger.wait_connection = true" sẽ treo lên quá trình của bạn, vì vậy hãy cẩn thận. – PeppyHeppy

+0

Đúng vậy, tôi nhận thấy rằng một số yêu cầu có "mãi mãi" (tức là 10-15 giây) nhưng ít nhất nó đã thực hiện thủ thuật nhấn trình gỡ lỗi mỗi lần. Nó vẫn ok cho tôi như tôi hầu như không sử dụng nó anyway, cụ thể là chỉ khi mã sống trong một cuộc gọi lại trỏ đến * .dev URI. – jayeff

8

Điều này xảy ra bởi vì Pow chạy hai công nhân proc esses là mặc định, và rdebug chỉ kết nối với một trong số chúng. Nếu quá trình khác phục vụ yêu cầu, thì không có súc sắc. Giải pháp là để buộc Pow để chạy một quá trình lao động duy nhất, như sau:

  1. Chỉnh sửa ~/.powconfig chứa export POW_WORKERS=1
  2. Restart Pow bản thân bằng cách giết chết quá trình Pow

Bạn nên bây giờ nhấn điểm ngắt của bạn trên mọi yêu cầu.

Các vấn đề liên quan