2011-07-31 9 views
6

Tôi đã thấy nhiều bài đăng cung cấp cờ -W0 làm câu trả lời cho vấn đề này, nhưng tôi không muốn chặn tất cả cảnh báo, chỉ cảnh báo về một giá trị cụ thể.Ngăn chặn cảnh báo cụ thể trong Ruby

Tôi đang chạy một ứng dụng không có đường ray (sử dụng ActiveRecord, bất kể) trên Ruby 1.8.7. Tôi muốn giữ lại tất cả các cảnh báo trừ các CẢNH BÁO deprecation sau:

Object#id will be deprecated; use Object#object_id

Nếu đó là không thể, tôi muốn vứt bỏ tất cả các cảnh báo không dùng nữa. Java, ít nhất, cho phép bạn làm điều này. Còn Ruby thì sao?

Cập nhật: Tôi đã upvoted cả hai câu trả lời nhưng đã kiểm tra câu trả lời mà người tìm kiếm sẽ tìm thấy ở đây sau này.

+1

Tại sao bạn không ngừng sử dụng 'Object # id'? – jtbandes

+1

Việc thay đổi cuộc gọi phương thức thành #object_id có khả thi không? –

+0

Không hoạt động. Đối tượng trong tâm trí là một cá thể ActiveRecord, vì vậy tôi đang tìm kiếm thuộc tính ActiveRecord 'id'. – JellicleCat

Trả lời

9

Nếu có một phần cụ thể của mã mà tạo ra những lời cảnh báo, bạn có thể thử trộn trong các mô-đun hạt nhân từ ActiveSupport và quấn nó với một khối silence_warnings (ví dụ kéo thẳng từ rdoc):

silence_warnings do 
    value = do_something_that_causes_warning # no warning voiced 
end 

noisy_call # warning voiced 

Is nó hoàn toàn cần thiết để ngăn chặn nó? Nó không giống như bạn đang biên soạn một cái gì đó và phải sàng lọc một tấn cảnh báo cùng một lúc ...

+1

Tôi không biên dịch, quả thật vậy, nhưng tôi muốn có một nhật ký sạch vì tôi đã sử dụng tệp nhật ký của tôi nhiều lần. – JellicleCat

+0

Điểm công bằng. Tôi vẫn còn quan tâm tại sao thay đổi tên phương thức là khó khăn đặc biệt là khi nó trả về cùng một giá trị như bản gốc. Đây có phải là một loại ứng dụng kế thừa nào đó không? Phụ thuộc bạn không thể sửa đổi/kiểm tra? –

+0

Sử dụng 'object_id' là một dấu đi bởi vì tôi không tìm kiếm object_id, thay vào đó, tôi đang tìm giá trị của thuộc tính 'id'. Đối tượng trong tâm trí là một thể hiện của ActiveRecord. – JellicleCat

3

Chỉnh sửa: Nếu bạn sử dụng read_attribute(:id), thì bạn nên tránh cảnh báo. Cảm ơn Jeremy!

Tôi không phải là nhà phát triển Rails, nhưng không có phương pháp cho phép bạn nói "Tôi muốn trường cơ sở dữ liệu id, không phải là phương pháp id của đối tượng"?

+0

'read_attribute (: id)' –