2016-12-06 16 views
10

Puma đáp ứng yêu cầu của tôi khi tôi đang sử dụng binding.pry. Trong bộ điều khiển của tôiPuma Rails 5 binding.pry chỉ có sẵn trong 60 giây trước khi hết thời gian

def new 
    require 'pry' 
    binding.pry 
end 

Sau đó, tôi yêu cầu truy cập bộ điều khiển và nhập phiên nâng lên. Sau 60 giây Puma? lần yêu cầu của tôi, khởi động lại một công nhân và sau đó thổi lên bằng cách gỡ lỗi phiên.

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

Tôi đã tạo ứng dụng này với người treo nếu điều đó quan trọng. Làm cách nào để mở rộng phiên gỡ lỗi của tôi trong đường ray 5?

Trả lời

6

Bạn có thể tạo tệp cấu hình và đặt giá trị thời gian chờ trong đó (đối với tất cả các yêu cầu, không chỉ các yêu cầu liên quan đến gỡ lỗi). Tôi muốn khuyên bạn nên tạo một dev-cụ thể, và tham khảo rằng khi chạy máy chủ tại địa phương (và không thiết lập một số giá trị timeout lớn cho sản xuất).

Trong ứng dụng ray của bạn, tạo ra một tập tin như /config/dev_puma_config.rb và đưa vào đó:

#!/usr/bin/env puma 

worker_timeout 3600 

Sau đó, khi bạn bắt đầu máy chủ của bạn, tham chiếu đó nộp với một -C như thế này:

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

Như một chút thông tin cơ bản về cài đặt worker_timeout đó, đây là những gì cấu hình puma nói về nó:

Xác minh rằng tất cả công nhân đã đăng ký quy trình tổng thể trong phạm vi thời gian chờ đã cho. Nếu không phải quy trình công nhân sẽ được khởi động lại. Điều này không phải là yêu cầu thời gian chờ, nó là để bảo vệ chống lại một quá trình treo hoặc chết . Đặt giá trị này sẽ không bảo vệ khỏi các yêu cầu chậm. Giá trị mặc định là 60 giây.

12

Làm thế nào về điều này?

# config/puma.rb  
... 

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

... 

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

Sửa (Rails 5.1.5):

Vì ENV [ 'RACK_ENV'] đã trống rỗng, tôi đã làm như sau:

# config/puma.rb 

... 

if ENV.fetch('RAILS_ENV') == 'development' 
    puts "LOGGER: development => worker_timeout 3600" 
    worker_timeout 3600 
end 
Các vấn đề liên quan