Overrides Tracker
Overrides Tracker keeps track of all overriding methods in your project and allows for comparison across branches.
Contact
Code and Bug Reports
- Issue Tracker
- See [CONTRIBUTING]
Getting started
Add OverridesTracker to your Gemfile and bundle install:
gem 'overrides_tracker', group: [:test, :development]
Add
overrides_tracker/*.otf
to your .gitignore file because you do won't to keep hold of your report file when changing branches.Track you overrides by running:
bundle exec overrides_tracker track
The output will look like this.
Reading all methods... Checking...AClass Checking...BClass Method is a new instance method: AClass#a_new_method Method is instance override: AClass#a_instance_method_override . . . Checking...YClass Method is a new singleton method: YClass#a_new_method Method is singleton override: YClass#a_singelton_method_override Checking...ZClass =========== Report saved to /PATH_TO_PROJECT/overrides_tracker/BRANCH_NAME#LAST_COMMIT_ID.otf
This will create a folder called overrides_tracker and creates a file containing all overriding methods of your branch.
Switch branch and follow steps 1-3 again. If you want to compare multiple branches you need to redo these steps for every branch.
Now you have at least 2 files in the overrides_tracker folder
It's time to compare these overrides accross branches.
bundle exec overrides_tracker compare
The result gives you an overview on what has changed and what not.
=========================================================================================== 1) BClass#a_instance_method_override: No Changes =========================================================================================== 2).... . . . =========================================================================================== 26) YClass#a_singelton_method_override: Changes between files in: master#528a0206d8f7cfe08737193659f85e28ccb260eb.otf YClass#a_singelton_method_override: Source: def self.a_singelton_method_override does_stuff_one_way end ../.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0/bundler/gems/some_gem/lib/some_gem/y_class.rb:2 Override: def self.a_singelton_method_override does_stuff_one_way_but_slitly_different end /PATH_TO_PROJECT/app/models/decorators/y_class_decorator.rb:13 in: upgrade_to_latest#beadcdd8e07a2c9dc2aefddeef04fc42e6fff0d5.otf YClass#a_singelton_method_override: Source: def self.a_singelton_method_override does_stuff_in_a_different_way end ../.rbenv/versions/2.3.8/lib/ruby/gems/2.3.0/bundler/gems/some_gem/lib/some_gem/y_class.rb:2 Override: def self.a_singelton_method_override does_stuff_one_way_but_slitly_different end /PATH_TO_PROJECT/app/models/decorators/y_class_decorator.rb:13 =========================================================================================== Summary: Found 29 distinct overridden methods 10 overridden methods have not changed 19 overridden methods have changed 1 where method is not an override 4 where method is not in codebase 15 source method bodies have changed
Ruby version compatibility
OverridesTracker is built in [Continuous Integration] on Ruby 2.3+.
Code of Conduct
Everyone participating in this project's development, issue trackers and other channels is expected to follow our Code of Conduct
Contributing
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
Copyright
Copyright (c) 2022 Simon Meyborg. See MIT-LICENSE for details.