2010-11-11 5 views
31

Tôi muốn kiểm tra 500 trang lỗi trong ứng dụng Rails của mình bằng cách sử dụng môi trường phát triển.Làm cách nào để kiểm tra 500.html trong thư mục phát triển env?

Tôi đã cố gắng này trong config/environments/development.rb:

config.action_controller.consider_all_requests_local = false 

Nhưng điều này dường như không có hiệu lực.

+1

sẽ thay đổi môi trường của bạn để giúp đỡ sản xuất? – Nuby

+0

Cá nhân tôi nghĩ rằng tốt hơn nên chuyển sang env sản xuất để kiểm tra các trang lỗi. Nếu bạn luôn vô hiệu hóa các trang lỗi tích hợp của Rails trong quá trình phát triển, bạn có thể khiến việc xem thông tin gỡ lỗi có giá trị trở nên khó khăn hơn. –

Trả lời

8

Bạn có thể:

  1. truy cập các ứng dụng sử dụng địa chỉ khác hơn là localhost hoặc 127.0.0.1 mà ray xem xét theo mặc định được yêu cầu địa phương
  2. Override local_request? trong application_controller.rb một cái gì đó như:
def local_request? 
    false 
end 

Thứ hai sẽ dừng các yêu cầu xử lý các yêu cầu từ localhost và 127.0.0.1 khi các yêu cầu cục bộ kết hợp với consider_all_requests_local = false sẽ hiển thị cho bạn trang 500.html của bạn.

+0

'local_request?' Không được chấp nhận trong Rails 3 trở đi: http://apidock.com/ rails/ActionController/Rescue/local_request% 3F – James

+13

Đối với những người đến từ Google và sử dụng Rails 3, hãy xem câu trả lời tiếp theo. – corbin

0

Tôi nghĩ rằng các thiết lập thích hợp để quay vòng là thế này:

config.action_view.debug_rjs = false 

Tại sao nó vẫn dán nhãn rjs là không hoàn toàn rõ ràng.

+0

Bây giờ tôi đã đặt cả hai thành false và vẫn không hoạt động ... – tbk

+0

điều này không có bất kỳ ảnh hưởng nào đối với tôi hoặc là – u2622

54

Cách duy nhất tôi đã tìm thấy để làm điều này cho đến nay là để thiết lập trong development.rb

config.consider_all_requests_local = false

Sau đó truy cập vào các URL sử dụng địa chỉ IP địa phương của tôi: http://192.168.1.135:3000/blah

Các thiết lập khác được đề cập don dường như không có hiệu lực.

+0

Có rất nhiều câu trả lời về điều này trên Stackoverflow. Đây là BY FAR cách tiếp cận dễ nhất. Cảm ơn bạn! – Eric

+2

Cũng hoạt động trong Rails 4. BTW, nó hoạt động cho tôi cũng sử dụng 127.0.0.1:3000/page_which_does_not_exist hoặc localhost: 3000/page_which_does_not_exist – Ben

+0

Không hoạt động đối với tôi. Tôi không nhận được kết quả khớp tuyến thay vì lỗi máy chủ nội bộ. – okysabeni

22

Không có giải pháp được đề xuất nào hoạt động trong ứng dụng Rails 3 của tôi. Giải pháp nhanh chóng và bẩn thỉu đối với tôi là chỉ cần nhấn trực tiếp vào các trang lỗi để xem HTML được hiển thị. Ví dụ,

http://0.0.0.0:3000/404.html 

http://0.0.0.0:3000/500.html 
+0

Đây phải là câu trả lời. Nó là giải pháp đơn giản nhất !!! – pratski

+0

Nó không làm việc cho tôi. Tôi đang nhận được trang lỗi 500 nhưng tôi thấy nó đang được đăng nhập bởi máy chủ rails hoặc nhật ký phát triển. – okysabeni

3

Bạn nên thêm dòng dưới đây để các application_controller,

unless ActionController::Base.consider_all_requests_local 
    rescue_from Exception, :with => :render_500 
    if ActiveRecord::RecordNotFound 
     rescue_from Exception, :with => :render_404 
    end 
    rescue_from ActionController::RoutingError, :with => :render_404 
    rescue_from ActionController::UnknownController, :with => :render_404 
    rescue_from ActionController::UnknownAction, :with => :render_404 
end 

Sau đó, hãy thử chạy với các thiết lập bên dưới.

config.action_controller.consider_all_requests_local = false trong config/môi trường/development.rb:

Nó sẽ làm việc. Vui lòng không quên viết hàm trong application_controller.rb để hiển thị bố cục cho từng thông báo lỗi.

+0

Bạn cũng có thể chỉ sử dụng lệnh 'rescue_from' ở đầu bộ điều khiển, như trong http://guides.rubyonrails.org/action_controller_overview.html#the-default-500-and-404-templates – dooleyo

+0

ActionController :: UnknownAction không tồn tại nữa – webdevguy

15

Chỉ cần thực hiện http://localhost:3000/404 hoặc/500 để truy cập các trang này và xem chúng trông như thế nào.

+2

Đây là câu trả lời ngắn nhất và tốt nhất cho người chỉ muốn thử nghiệm thiết kế cho những trang đó –

+0

Tôi đồng ý với bạn. –

1

Ngoài thiết lập: config.consider_all_requests_local = false Tôi cũng cần thiết để thiết lập: config.action_dispatch.show_exceptions = true

0

nếu bạn chỉ muốn để buộc một lỗi 500 để xem những gì có vẻ như, bạn chỉ có thể thêm video này vào một cái nhìn:

Haml dụ:

= render :partial => "broken", :status => 500 
+1

Thêm một số giải thích với câu trả lời cho cách câu trả lời này giúp OP trong việc khắc phục sự cố hiện tại –