2014-04-01 119 views

回答

32

我不得不拼湊從幾個不同的來源的信息,以實現上述,所以我想我包括一個統一導引這裏爲方便起見:

步驟如下:

  1. 在配置/環境/ development.rb,添加:

    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. 重啓戰俘,並參觀yourapp.dev

  3. 運行以下命令:

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

您應該看到與遠程實例的成功連接。

+0

謝謝。我可以連接到服務器,但我的斷點不會中斷。有任何想法嗎?開始的地方?謝謝! –

+0

你使用pow?如果是這樣,請嘗試http:// stackoverflow中的第一個答案。com/questions/8996498/ruby​​-debug-with-pow-breakpoints-never-hit –

+2

我正在使用pow。我試了答案,沒有運氣。我坐在一個終端上,連接到byebug server localhost:12346。 Connected.'和大量的'byebug'調用我的代碼,但沒有打破!我現在處於虧損狀態 - 如果你有任何其他想法,我全都是耳朵!否則,無論如何,謝謝你的幫助! –

34

約瑟夫的答案很好,但在一些小方面令人困惑。他將起始的Byebug服務器放在config/environments/development.rb中,在初始化程序中它會更好。此外,環境變量的輸出進入.powenv.powrc。這是我得到它的工作。

在你的Gemfile:

gem 'byebug' 

在命令行:

bundle install 

如果使用的是戰俘,添加以下.powenv

export BYEBUGPORT=3001 

如果您正在使用其他框架(例如,只是foreman),您可能需要修改改爲。

config/initializers/byebug.rb

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

最後在命令行:

touch tmp/restart.txt 

一旦你去你的網站的戰俘,在byebug服務器應啓動。在命令行中,您現在可以執行以下操作:

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

的確做得很好。它完全按照你記錄的那樣工作。 –

+1

是的,遵循指示,它像一個魅力。謝謝尼古拉斯! –

+0

請注意,可能不需要「touch tmp/restart.txt」,具體取決於應用程序服務器。 Passenger在生產中需要,通常在任何應用服務器上都不需要開發。 –