2012-05-04 30 views
5

tôi có một cái nhìn tên new.html.erb với đoạn mã sau:Rails trang đầy đủ lỗi không hiển thị cho xem lỗi

<%= some_non_existent_thing.imaginary_method %> 

Bây giờ, tôi chỉ nhìn thấy một trang 500 lỗi đơn giản, như thế:

500 Lỗi Máy chủ Nội bộ
Nếu bạn là quản trị viên của trang web này, vui lòng đọc tệp nhật ký của ứng dụng web này và/hoặc tệp nhật ký của máy chủ web để tìm hiểu điều gì đã xảy ra.

Tôi có nên xem một trang được định dạng đẹp với một số thông tin về ngoại lệ không?

Tôi không chắc mình bỏ sót điều gì ở đây, nhưng tôi tin rằng đường ray được sử dụng để hiển thị trang lỗi đầy đủ trong môi trường phát triển khi có điều gì đó sai trong chế độ xem.

+3

vì vậy, điều này đã xảy ra trong hộp dev của bạn hoặc những nơi như Heroku? –

+0

nội dung trong nhật ký là gì? – gabrielhilal

Trả lời

5

Are bạn chắc chắn rằng bạn đang chạy môi trường phát triển? Kiểm tra xem RAILS_ENV=development hoặc bạn đang chạy rails server -e development.

Sau đó kiểm tra tập tin development.rb của bạn, bạn nên có những dòng sau đây trong nó

config.consider_all_requests_local = true 
0

Thứ nhất, như Anton đề cập trong câu trả lời dưới đây, xác nhận rằng config/environments/development.rb của bạn có:

config.consider_all_requests_local = true 

và rằng bạn đang chạy máy chủ trong chế độ phát triển.

Tôi đã đảm bảo các điều trên và vẫn quan sát thấy lỗi. Điều này xảy ra trong trường hợp của tôi, bởi vì logger của tôi có một số lỗi. Tôi đã sử dụng trình định dạng nhật ký tùy chỉnh, sử dụng phương thức String#% để định dạng nhật ký. % dường như rất lỗi và dẫn đến tất cả các lỗi lạ này. Tôi đã tìm ra điều này bằng cách thêm một dòng debugger vào phương thức điều khiển và bước vào trong hàm gọi hàm render. Nó nhấn lỗi và báo cáo lỗi này là lỗi malformed format string.

Đây là định dạng log Tôi đã sử dụng trước đó, mà gây ra lỗi [Tôi đã thêm nó vào một tập tin initializer]:

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    "%-7s #{msg}\n" % severity 
    end 
end 

Những sửa đổi sửa lỗi:

class Logger::SimpleFormatter 
    def call(severity, time, progname, msg) 
    severity_prefix = "[#{severity}]".ljust(7) 
    "#{severity_prefix} #{msg}\n" 
    end 
end 
0

Điều này xảy ra nếu mã không biên dịch được, ví dụ nếu bạn có một câu lệnh if thiếu dấu chấm hết.

+0

Trong quá trình phát triển, nó sẽ hiển thị ngoại lệ và không phải là trang lỗi 500. – felipero

Các vấn đề liên quan