Tôi có một số bộ điều khiển trong ứng dụng Ruby on Rails với trình xử lý giải cứu vào cuối hành động cơ bản bắt được bất kỳ lỗi không xử lý nào và trả về một số lỗi "thân thiện với người dùng". Tuy nhiên, khi tôi đang làm thử nghiệm cào tôi muốn có những trình xử lý cứu hộ mặc định bị vô hiệu hóa vì vậy tôi có thể thấy lỗi đầy đủ & theo dõi ngăn xếp. Có cách nào tự động để thực hiện việc này không?Làm cách nào để vô hiệu hóa trình xử lý cứu hộ trong ứng dụng Ruby on Rails khi tôi đang chạy thử nghiệm chức năng?
Cập nhật để làm rõ: Tôi có một hành động như thế này:
def foo
# do some stuff...
rescue
render :text => "Exception: #{$!}" # this could be any kind of custom render
end
Bây giờ khi tôi thử nghiệm chức năng này, nếu các ngoại lệ xảy ra sau đó tôi sẽ có được chỉ là một chút thông tin về ngoại lệ, nhưng những gì tôi muốn là để nó hoạt động như thể không có trình xử lý giải cứu ở đó, vì vậy tôi nhận được thông tin gỡ lỗi đầy đủ.
Cập nhật: GIẢI PHÁP
Tôi đã làm điều này:
rescue:
raise unless Rails.env.production?
render :text => "Exception: #{$!}" # this could be any kind of custom render
end
Tôi sẽ cố gắng! –
tăng nếu Rails.env.test? là sạch hơn IMO – Scott
@Steven điều này không thực sự giải cứu chỉ trong sản xuất. Nó làm tăng nó ở đâu .. nhưng nếu bạn có 20 dòng mã trong công cụ #do thì việc tăng không cho phép tham chiếu đến điều này. Dấu vết cho biết lỗi xảy ra trên dòng mà lệnh tăng lên. – baash05