Ruby on Rails: Treat deprecation warnings as error

2019-04-06 04:08发布

问题:

I recently upgraded from Rails 2 to Rails 3, and I'm trying to root out all the code I might have that is deprecated. The way I'm doing this is just surfing around a copy of my site running on a development machine, and peering at the output from the console for warnings.

Is there a way to cause Rails to treat deprecation warnings as errors or otherwise find deprecated code more efficiently?

回答1:

You can customise the behaviour of deprecated calls by setting ActiveSupport::Deprecation.behavior. This should be set to a Proc that accepts a message and a callstack e.g. you could do:

ActiveSupport::Deprecation.behavior = Proc.new { |message, callstack|
  raise message + "\n" + callstack.join("\n  ")
}

If you have automated tests for your app these are invaluable when upgrading the version of Rails being used.