2016-12-06 14 views
10

私はbinding.pryを使用している時に私の要求をタイムアウトします。私のコントローラーでPuma Rails 5 binding.pryはタイムアウト前に60秒間のみ利用可能です

def new 
    require 'pry' 
    binding.pry 
end 

私はコントローラーにヒットしてプライムセッションに入るよう要求します。 60秒後プーマ?私の要求をタイムアウトさせ、ワーカーを再起動し、その後、デバッグセッションで爆破します。

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

このアプリはサスペンドで作成しました。どうすればレール5でデバッグセッションを延長できますか?

答えて

6

コンフィギュレーションファイルを作成し、そこにタイムアウト値を設定することができます(デバッグに関係する要求だけでなく、すべての要求に対して)。私は、devの固有のものを作ることをお勧めし、サーバーをローカルで実行しているときに、それを参照して、プロダクション用に大きなタイムアウト値を設定しないでください。あなたのRailsアプリケーションで

/config/dev_puma_config.rb様およびその中にファイルを作成入れる:

#!/usr/bin/env puma 

worker_timeout 3600 

を次に、あなたがあなたのサーバーを起動するときに、このような-Cと参照そのファイル:

bundle exec puma -t 1:1 -w 1 -p 3000 -e development -C 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 

編集(Railsの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 
関連する問題