└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Ruby Best Practices List πŸ“š 2 | 3 | A list of well-written Ruby codebases and resources to help you extract and apply best practices in your Ruby apps. 4 | 5 | For the exercises, we suggest you follow [this exercise format](https://www.hexdevs.com/posts/learn-ruby-best-practices-with-one-exercise/#one-exercise-to-teach-you-ruby-on-rails-best-practices) to get the most out of this list. 6 | 7 | --- 8 | ## Open-Source Projects πŸ’» 9 | - [Upcase by thoughtbot](https://github.com/thoughtbot/upcase) 10 | - [dry-rb/dry-validation](https://github.com/dry-rb/dry-validation) 11 | - [fog](https://github.com/fog/fog) 12 | - [Sustainable Rails Template](https://github.com/davetron5000/rails-app-template-sustainable) 13 | 14 | ## Articles πŸ“° 15 | - [Learn Ruby on Rails Best Practices With One Exercise 🍝](https://www.hexdevs.com/posts/learn-ruby-best-practices-with-one-exercise/) 16 | - [How to Improve Code Quality on a Ruby on Rails Application](https://www.hexdevs.com/posts/technical-debt-ruby-on-rails/) 17 | - [Sandi Metz' Rules For Developers](https://thoughtbot.com/blog/sandi-metz-rules-for-developers) 18 | - [Breaking Up the Behemoth by Sandi Metz](https://sandimetz.com/blog/2017/9/13/breaking-up-the-behemoth) 19 | - [The Doctrine of Useful Objects](http://docs.eventide-project.org/user-guide/useful-objects.html) 20 | 21 | ## Papers 22 | 23 | - [Defining, Measuring, and Managing Technical Debt](https://www.computer.org/csdl/magazine/so/2023/03/10109339/1MESXKyAYNO) 24 | 25 | ## Courses πŸ“Ί 26 | - [Clean-Code Series - Upcase](https://thoughtbot.com/upcase/clean-code) 27 | - [Sandi Metz's Rules - Upcase](https://thoughtbot.com/upcase/videos/sandi-metzs-rules) 28 | 29 | ## Books πŸ”– 30 | - [Ruby Science - The reference for writing fantastic Rails applications](https://github.com/thoughtbot/ruby-science) 31 | - [Practical Object-Oriented Design (POODR)](https://sandimetz.com/products#product-poodr) 32 | - [Sustainable Web Development with Ruby on Rails](https://sustainable-rails.com/) 33 | - [The Mythical Man-Month](https://en.wikipedia.org/wiki/The_Mythical_Man-Month) 34 | - [Exceptional Ruby](https://store.avdi.codes/l/NWtnk) 35 | - [Refactoring: Ruby Edition](https://martinfowler.com/books/refactoringRubyEd.html) 36 | - [Working Effectively with Legacy Code](https://www.goodreads.com/book/show/44919.Working_Effectively_with_Legacy_Code) 37 | 38 | ## Talks🎀 39 | - [Polly want a message - Sandi Metz](https://www.youtube.com/watch?v=XXi_FBrZQiU) 40 | - [Get a Whiff of This - Sandi Metz](https://www.youtube.com/watch?v=PJjHfa5yxlU) 41 | - [Escaping The Tar Pit - Ernesto Tagwerker](https://www.youtube.com/watch?v=ZyU6K6eR-_A) 42 | - [Makers vs Menders Talk by M. Scott Ford](https://www.youtube.com/watch?v=YW0BpCThjuM) 43 | 44 | ## Podcasts 🎧 45 | - [hexdevs podcast - Ruby Code Quality with Ernesto Tagwerker](https://www.hexdevs.com/posts/ruby-code-quality-ernesto-tagwerker/) 46 | - [hexdevs podcast - Building Technical Wealth and Improving Legacy Code with M. Scott Ford](https://www.hexdevs.com/posts/building-technical-wealth-legacy-code-m-scott-ford/) 47 | 48 | ## Tools 🧰 49 | - [RubyCritic](https://github.com/whitesmith/rubycritic): a gem that wraps around static analysis gems such as Reek, Flay and Flog to provide a quality report of your Ruby code. 50 | - [Skunk](https://github.com/fastruby/skunk): A SkunkScore Calculator for Ruby Code -- Find the most complicated code without test coverage! 51 | - [rails_stats - See more stats about a Rails app](https://github.com/fastruby/rails_stats) 52 | - [metric_fu - A list of code metrics (best practices, code smells, etc.) for Ruby projects](https://github.com/metricfu/metric_fu) 53 | - [Coverband](https://github.com/danmayer/coverband) - Ruby production code coverage collection and reporting (line of code usage) 54 | - [Sonarqube](https://www.sonarqube.org/) - Thousands of automated Static Code Analysis rules, protecting your app on multiple fronts, and guiding your team. 55 | - [CodeScene](https://codescene.com/) - One tool to visualise, understand and improve your software when it comes to code, knowledge and people behind it. 56 | - [Code Quality Tools - a massive list of code quality tools and metrics for Ruby projects](https://github.com/metricfu/metric_fu/wiki/Code-Tools) 57 | 58 | ## Challenges πŸ› οΈ 59 | - [The Code Quality Challenge](https://tuple.app/code-quality-challenge) 60 | 61 | ## Cheat Sheets πŸ” 62 | - [Smells to Refactorings Quick Reference Guide](https://www.industriallogic.com/img/blog/2005/09/smellstorefactorings.pdf) 63 | 64 | --- 65 | List compiled by [hexdevs](https://www.hexdevs.com). 66 | Have a suggestion or a question? Discussions are welcomed [here](https://github.com/hexdevs/ruby-best-practices-list/discussions/1). 67 | --------------------------------------------------------------------------------