3 ms·
Cutting Corners or Why Rails May Kill Ruby
- tel 11y agoI recently learned that `forty_two` [0] is monkeypatched into Array of all places by Rails. More or less entirely as a meta joke. [0] http://apidock.com/rails/Array/forty_two http://apidock.com/rails/Array/forty_two
- capsule_toy 11y agoWhile I agree with the sentiment, I don't believe it's necessarily cutting corners. Rather, it's by design. Rails values "elegance," and leans towards monolithism. Monkey patching is the means to those ends. So even though I agree with you, I think it's going to be very difficult changing the philosophy of the Rails' ecosystem.
- ssmoot 11y agoWhat if you could require() your patch just where you needed it? You'd have the utility and elegance of the simple solution, without abusing the global namespace. That's exactly what you'd do in Scala. implicit class HtmlHelpers(node: Node) { def id: String = node \ "@id" text def name: String = node \ "@name" text def cssClass: String = node \ "@class" text def href: String = node \ "@href" text } And I haven't abused anything. Whenever I need it, even within another method, I can just import until.HtmlHelpers.
- joshguthrie 11y agorefines are coming soon into ruby-core (2.2.0 IIRC).