Uncruft
A library to assist with clearing out Rails deprecation warnings and upgrading Rails versions.
Getting Started
Uncruft is designed to work with Rails 4.2 and higher.
Installation
You can add Uncruft to your Gemfile with:
gem 'uncruft'
Then run bundle install
.
Deprecation Warnings
By default, deprecation warnings will cause your application to raise exceptions in test
and development
modes.
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.
Recording Deprecations
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:
RECORD_DEPRECATIONS=1 rake
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
Within the 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.
Suggested Workflow
- 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.