All Projects → cored → alt-rails

cored / alt-rails

Licence: other
Design/Arquitectural patterns for big Rails applications

Projects that are alternatives of or similar to alt-rails

job-interview-solid-principles-test
A programming job interview questions that test the understanding of basic principles and patterns
Stars: ✭ 32 (+0%)
Mutual labels:  patterns, ood-principles
cgol
Conway's Game of Life in the Terminal
Stars: ✭ 32 (+0%)
Mutual labels:  patterns
Design Patterns In C
Practical design patterns in C
Stars: ✭ 183 (+471.88%)
Mutual labels:  patterns
Escape From Callback Mountain
Example Project & Guide for mastering Promises in Node/JavaScript. Feat. proposed 'Functional River' pattern
Stars: ✭ 249 (+678.13%)
Mutual labels:  patterns
Awesome Coding Interview Question Patterns
The most common question-patterns for any coding-interview
Stars: ✭ 196 (+512.5%)
Mutual labels:  patterns
lua-patterns
Lua Patterns Viewer. A tool for inspecting, analyzing and learning Lua patterns.
Stars: ✭ 71 (+121.88%)
Mutual labels:  patterns
Expat
Reusable, composable patterns across Elixir libraries
Stars: ✭ 157 (+390.63%)
Mutual labels:  patterns
flutter getx template
🍻🍀 This is source base for getx flutter. Optimize by lambiengcode
Stars: ✭ 43 (+34.38%)
Mutual labels:  patterns
Vogen
A semi-opinionated library which is a source generator and a code analyser. It Source generates Value Objects
Stars: ✭ 240 (+650%)
Mutual labels:  patterns
Node.js Design Patterns Third Edition
Node.js Design Patterns Third Edition, published by Packt
Stars: ✭ 239 (+646.88%)
Mutual labels:  patterns
Semana Js Expert30
Aulas da Semana JS Expert 3.0 - Construindo um chat multiplataforma usando linha de comando e JavaScript Avançado
Stars: ✭ 238 (+643.75%)
Mutual labels:  patterns
Reactpatterns
React patterns & techniques to use in development for React Developer ⚛ .
Stars: ✭ 201 (+528.13%)
Mutual labels:  patterns
ui patterns
[NOTE] Development has moved to https://drupal.org/project/ui_patterns
Stars: ✭ 87 (+171.88%)
Mutual labels:  patterns
Awesome Patterns
Collections of Go patterns based on tmrts/go-patterns, But merged with other awesome forks and more improvoments.
Stars: ✭ 188 (+487.5%)
Mutual labels:  patterns
redis-patterns-console
An interactive (and reactive) console to try and go into the deep of Redis and its patterns!
Stars: ✭ 22 (-31.25%)
Mutual labels:  patterns
Patterns
Language agnostic patterns description
Stars: ✭ 182 (+468.75%)
Mutual labels:  patterns
Gof In Kotlin
Gang of Four patterns in Kotlin.
Stars: ✭ 221 (+590.63%)
Mutual labels:  patterns
Go Patterns
Curated list of Go design patterns, recipes and idioms
Stars: ✭ 17,827 (+55609.38%)
Mutual labels:  patterns
awesome-programming-books
List of good programming books for beginners and professionals
Stars: ✭ 68 (+112.5%)
Mutual labels:  patterns
ACCESS-NYC-PATTERNS
ACCESS NYC Pattern library and design system documentation for https://access.nyc.gov. Maintained by @NYCOpportunity
Stars: ✭ 14 (-56.25%)
Mutual labels:  patterns

ALT Rails

Introduction

So what is ALT .NET? And how does it differ from the .NET that we already know and love? What are these values that many of us think are missing? What are these alternative tools, techniques, and practices that ALT .NET'ers are espousing? Let's first examine the original tenets of being an ALT .NET developer.

ALT Rails tries to answer the same questions for Ruby on Rails. There's an increase of interest on this topic as some of the big companies using the framework share:

ALT Rails Developers Principles

  1. Pragmatic developers who use whatever works are always looking for a better way

Solutions to problems hardly appear, fighting the tools we use to deliver the solutions. If Ruby on Rails is not serving us at any moment, we have the right to swap it whenever we see fit, without a lot of hassle. Business rules shouldn't be couple to any infrastructure details. A web framework is part of the infrastructure.

  1. Look outside of the Ruby on Rails community to adopt best practices from everywhere

Ideas are discoveries, not inventions.

  1. Understand the value of simplification and keep looking for ways to improve the code-base

  2. Realize that tools are great but what matters are principles and knowledge

The best tools encourage the adoption of good Software Engineering principles.

ALT Rails Way

Ruby on Rails Components

Ruby on Rails promotes a structure around the MVC pattern.

The Ruby on Rails definition of boundary resides in three buckets: a Model, a Controller, and a View.

When describing complex problems is essential to use rich and expressive language to do so. The language used to communicate changes in a Ruby on Rails application is not expressive because it uses those three buckets.

The language used to express a solution should include concepts from the problem's domain.

It is not cost-effective to share a mental model with businesspeople describing technical details.

There is a big gap between MVC, which describes a web-application structure, and the application's core domain. The persistence abstraction in Ruby on Rails application often accrues a high level of complexity.

ActiveRecord: Ruby on Rails Persistence Layer

ActiveRecord models characterize themselves by mapping the database structure and application code.

ActiveRecord models include persistence logic to manage the database and the application mapping. The more logic an ActiveRecord model has, the easier it is to introduce a God Object to the application.

In object-oriented programming, a God object (sometimes also called an Omniscient or All-knowing object) is an object that references a large number of distinct types, has too many unrelated or uncategorized methods, or some combination of both.

God objects are hard to evolve because they are hard to test. Another item that comes up is that they're hard to evolve because of all these complex interactions between different methods inside of God objects.

Evolving a Software Architecture

The architecture of a software system is the shape given to that system by those who build it. Developers drive the shape of a system while introducing new features to a plan.

The final structure, thus, supports operational business processes. In other words, it is not possible to suggest a pre-defined design that will fit every project.

ALT Rails Way goal is to identify solutions for everyday problems with big Ruby on Rails applications. The following recipes and patterns are more of reference material than a prescription.

References

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].