A library to assist with clearing out Rails deprecation warnings and upgrading Rails versions.
Uncruft is designed to work with Rails 4.2 and higher.
You can add Uncruft to your Gemfile with:
By default, deprecation warnings will cause your application to raise exceptions in
The exception message will include the original deprecation warning, plus a link to our troubleshooting guide, to assist with resolving deprecations as they are encountered.
When testing on a new Rails version for the first time, you will undoubtedly encounter many new warnings. As such, you can quickly record all existing deprecation warnings encountered during your test suite like so:
This will generate (or add to) an ignorefile of warnings at
config/deprecations.ignore. Any warning in that file will be ignored when next encountered.
You can also incrementally add new warnings to the ignorefile as you encounter them:
RECORD_DEPRECATIONS=1 rspec path/to/my/failing/spec.rb
Deprecating Attributes and Methods
If you would like to deprecate an attribute by applying a
ActiveSupport::Deprecation warning on the deprecated attribute's getters and setters then look no further, we have a tool for that! Simply include
Uncruft::Deprecatable in your class, identify the attribute you would like deprecated and provide a message you would like applied to the deprecation warning.
class Customer include Uncruft::Deprecatable attr_accessor :first_name def initialize(first_name) @first_name = first_name end deprecate_attribute(:first_name, message: "Please stop using first_name it is deprecated, please use legal_first_name instead!") end
Uncruft::Deprecatable module there is also a
.deprecate_method method that can be used to apply a deprecation warning to an identified method, much like the
deprecate_attribute method described above.
From there you can use Uncruft's deprecation recording tools to generate ingorefiles and manage your deprecation backlog in an organized manner.
How to Contribute
We would love for you to contribute! Anything that benefits the majority of users—from a documentation fix to an entirely new feature—is encouraged.
Before diving in, check our issue tracker and consider creating a new issue to get early feedback on your proposed change.
- Fork the project and create a new branch for your contribution.
- Write your contribution (and any applicable test coverage).
- Make sure all tests pass (
bundle exec rake).
- Submit a pull request.