2016-12-06 80 views
10

彪馬超時我的請求時,我使用binding.pry。在我的控制器中彪馬Rails的5 binding.pry僅適用於超時60秒,然後

def new 
    require 'pry' 
    binding.pry 
end 

然後我發出一個請求,命中控制器並進入pry會話。 Puma過了60秒後?超時我的請求,重新啓動一個工作人員,隨後通過調試會話爆炸。

[1] pry(#<Agent::ClientsController>)> [3522] ! Terminating timed out worker: 3566 
[3522] - Worker 0 (pid: 4171) booted, phase: 0 

我生成這個應用程序與吊帶,如果重要的話。如何在rails 5中擴展我的調試會話?

回答

6

您可以創建一個配置文件,並在那裏設置超時值(所有請求,而不僅僅是參與調試的)。我建議製作一個特定於開發者的版本,並且在本地運行服務器時(並且不要爲生產設置一些大的超時值)。當您啓動服務器時,參考與一個-C像這樣的文件

#!/usr/bin/env puma 

worker_timeout 3600 

然後:

bundle exec puma -t 1:1 -w 1 -p 3000 -e development -C config/dev_puma_config.rb

在Rails應用程序,創建一個文件一樣/config/dev_puma_config.rb,並在其中放

作爲位上worker_timeout設置背景資料,這裏是美洲獅的配置說的話吧:

驗證所有工人都在給主進程中 了給定超時檢查。如果不是,則工作進程將被重新啓動。這 不是請求超時,這是爲了防止掛起或死 過程。設置此值不會防止緩慢的請求。 默認值是60秒。

12

這個怎麼樣?

# config/puma.rb  
... 

environment ENV['RACK_ENV'] || 'development' 

... 

if ENV['RACK_ENV'] == 'development' 
    worker_timeout 3600 
end 

編輯(滑軌5.1.5):

由於ENV [ 'RACK_ENV']是空的,我做了以下:

# config/puma.rb 

... 

if ENV.fetch('RAILS_ENV') == 'development' 
    puts "LOGGER: development => worker_timeout 3600" 
    worker_timeout 3600 
end