A Rails Criticism
updated almost 5 years ago; latest suggestion almost 5 years ago
A deep insight on why Ruby on Rails has revolutionized web development.
This talk will focus its attention on the Rails "Golden Path", the reasons to its success, the most common problems, and how its API can be improved.
We will learn to benefit from a tool as powerful as it is dangerous, how to mitigate architectural, design and testability implications for your applications and how to improve the quality of your code.
My idea is to expose how the Rails API are impacting the way we build applications. Specifically, the mixup of domain models and persistance, lack of a "real" view layer (ActionView only uses templates and not view objects), callbacks.
In general, Rails encourage certain OOP/SOLID violations, like SRP for controllers, Demeter's Law while navigating AR associations, Encapsulation for AR models which are exposing their state via public accessors (and the related Tell Don't Ask problems), AV helpers who are mixing up functional paradigm.
All these things are causing problems for maintaing medium to large projects (it's no just about legacy, as Kerry suggested), problems to jump into a newer major Rails release, or to test in isolation (AR and AC aren't unit tests, because they involve SQL or HTTP interactions).
This sounds like it shares some common ground with Legacy Rails Apps: A Collection of Antipatterns and Sustainable productivity: Rails vs OOP. I think there's probably only room for one "how to do Rails better" talk – any possibility of combining the best parts of each?
As it stands, this proposal is a bit too vague - everyone will be imagining their own ideas about the "successful" and "problematic" aspects.
I'd find it really useful if you could outline a couple of examples of what you mean by "reasons to its success", and at least a couple of the specific "problems" you're going to engage with.
There could definitely be a great talk here, but we need to figure out how to differentiate the proposal from other "how to work better with Rails" talks. What do you think?