Suppress particular warning in Ruby

独自空忆成欢 提交于 2020-01-02 02:32:06

问题


I've seen plenty of posts providing the -W0 flag as an answer to this issue, but I don't want to suppress all warnings, just warnings of a particular value.

I'm running a non-rails app (which uses ActiveRecord, notwithstanding) on Ruby 1.8.7. I want to keep all warnings except for the following DEPRECATION WARNING:

Object#id will be deprecated; use Object#object_id

If that's not possible, I'd like to jettison all deprecation warnings. Java, at least, lets you do this. How about Ruby?

Update: I've upvoted both answers but checked the one that later searchers will expect to find here.


回答1:


If there's a specific section of code that produces the warnings, you could try mixing in the Kernel module from ActiveSupport and wrap it with a silence_warnings block (example pulled straight from the RDoc):

silence_warnings do
  value = do_something_that_causes_warning # no warning voiced
end

noisy_call # warning voiced

Is it absolutely necessary to suppress it? It's not like you're compiling something and have to sift through a ton of warnings all at once...




回答2:


Edit: If you use read_attribute(:id), then you should avoid the waring. Thanks Jeremy!

I'm not a Rails developer, but isn't there a method that allows you to say "I want the database field id, not the id method of the object"?



来源:https://stackoverflow.com/questions/6890939/suppress-particular-warning-in-ruby

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!