All Projects → gosukiwi → churnalizer

gosukiwi / churnalizer

Licence: MIT license
Analyze your Ruby app for Churn vs Complexity

Programming Languages

ruby
36898 projects - #4 most used programming language
HTML
75241 projects
shell
77523 projects

Projects that are alternatives of or similar to churnalizer

rails cursor pagination
Add cursor pagination to your ActiveRecord backed application
Stars: ✭ 21 (+23.53%)
Mutual labels:  ruby-gem, gem
Stitches
Create a Microservice in Rails with minimal ceremony
Stars: ✭ 371 (+2082.35%)
Mutual labels:  ruby-gem, gem
filtered
Filters ActiveRecord queries in a nice way
Stars: ✭ 28 (+64.71%)
Mutual labels:  ruby-gem, gem
multi-tenancy-devise
mtdevise adds basecamp style user logins to your ruby on rails application.
Stars: ✭ 27 (+58.82%)
Mutual labels:  ruby-gem, gem
Api Fuzzer
API Fuzzer which allows to fuzz request attributes using common pentesting techniques and lists vulnerabilities
Stars: ✭ 238 (+1300%)
Mutual labels:  ruby-gem, gem
jsonapi-serializer-formats
💎 Gem to enrich jsonapi-serializer with multiple formats
Stars: ✭ 20 (+17.65%)
Mutual labels:  ruby-gem, gem
log-symbols
A ruby 💎gem💎 for generating log symbols
Stars: ✭ 14 (-17.65%)
Mutual labels:  ruby-gem, gem
make model searchable
Adds simlpe search functionality to models
Stars: ✭ 27 (+58.82%)
Mutual labels:  ruby-gem, gem
Unimidi
Realtime MIDI IO for Ruby
Stars: ✭ 229 (+1247.06%)
Mutual labels:  ruby-gem, gem
Motion
Reactive frontend UI components for Rails in pure Ruby
Stars: ✭ 498 (+2829.41%)
Mutual labels:  ruby-gem, gem
syobocal
Simle gem for Syboi Calendar
Stars: ✭ 13 (-23.53%)
Mutual labels:  ruby-gem, gem
pixitar
🧝 Pixitar is an avatar generation library written in Ruby.
Stars: ✭ 20 (+17.65%)
Mutual labels:  ruby-gem, gem
rspec n
A ruby gem that runs RSpec N times.
Stars: ✭ 37 (+117.65%)
Mutual labels:  ruby-gem, gem
Devise masquerade
Extension for devise, enable login as functionality. Add link to the masquerade_path(resource) and use it.
Stars: ✭ 380 (+2135.29%)
Mutual labels:  ruby-gem, gem
memo wise
The wise choice for Ruby memoization
Stars: ✭ 486 (+2758.82%)
Mutual labels:  ruby-gem, gem
grape-jwt-authentication
A reusable Grape JWT authentication concern
Stars: ✭ 31 (+82.35%)
Mutual labels:  ruby-gem, gem
reproducible-continual-learning
Continual learning baselines and strategies from popular papers, using Avalanche. We include EWC, SI, GEM, AGEM, LwF, iCarl, GDumb, and other strategies.
Stars: ✭ 118 (+594.12%)
Mutual labels:  gem
active record-updated at
Touch `updated_at` by default with calls to `update_all` and `update_column(s)`
Stars: ✭ 27 (+58.82%)
Mutual labels:  gem
daru-io
daru-io is a plugin gem to the existing daru gem, which aims to add support to Importing DataFrames from / Exporting DataFrames to multiple formats.
Stars: ✭ 21 (+23.53%)
Mutual labels:  ruby-gem
graphql-remote loader
Performant remote GraphQL queries from within the resolvers of a Ruby GraphQL API.
Stars: ✭ 52 (+205.88%)
Mutual labels:  ruby-gem

Churnalizer

Churnalizer helps you analyze the churn vs complexity of your Ruby application.

Graph Screenshot

What is churn vs complexity? I first learnt about it in Sandi Metz's blog post Breaking up the Behemot, there she links to another great article by Michael Feathers.

Basically, it shows you which files need to be refactored first -- top-right corner of the graph. Churn is how many times a file has been changed, so you want files which change a lot to be simple. Files which are never touched are fine with being complex for a while.

Installation

$ gem install churnalizer

Usage

$ churnalizer my-app-directory/

This was only tested on MacOS. It uses the open command to make things easier, so when the gem is done analyzing your app, it will open the generated chart with your default browser.

That functionality would not work on Linux so the chart would need to be opened manually.

Don't think it works on Windows at all, given the churn counter uses the following command: cd $(dirname #{file}) && git log --oneline -- #{file} | wc -l

Ignoring Files

By default, Churnalizer will ignore specs and Rails files like schema.rb and routes.rb.

For custom ignore rules, in the base directory you are analyzing, create a file named .churnignore, in that file, add a regular expression per-line to run against file paths. If a regex returns true, it will be ignored.

For example, this is the default .churnignore file:

/test/
/spec/
/db/
/config/
/bin/
/vendor/
/public/

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Playing with the CLI

To locally run the CLI use ruby -Ilib exe/churnalizer

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/gosukiwi/churnalizer.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].