Ich bin ein .NET-Entwickler und hatte dieses Wochenende gerade die Gelegenheit, mit Ruby on Rails zu spielen.
In .NET trennen wir Ebenen der Anwendung, indem wir separate Klassenbibliotheksprojekte erstellen. Müssen wir das vom Standpunkt des Entwurfsmusters aus auch in Rails tun, oder ist es nur ein ganzes Projekt mit allem darin?
design-patterns
.net
ruby-on-rails
Ryan Adriano
quelle
quelle
Antworten:
Sie werden feststellen, dass Rails-Apps als einzelne Repos gestartet werden . Die erfolgreicheren (Twitter, Square, viele andere) teilen sich in mehrere Codebasen auf, wenn sie diese Anforderung erfüllen. Diese zusätzlichen Codebasen können Dämonen , Dienste , Edelsteine, Rails Engines oder etwas anderes sein.
Dieses Refactoring in mehrere Projekte wird erst durchgeführt, wenn es sich als notwendig erweist, weil YAGNI . Die Aufteilung Ihres Projekts am ersten Tag verlangsamt die Prototyping-Zeit, und die Prototyping-Geschwindigkeit ist eine wichtige Stärke von Ruby und Rails. Sie sollten bedenken, dass das Erstellen oder eine Klasse in Ruby fast nichts kostet, ebenso wie das Auseinanderbrechen einer gut durchdachten Klasse. Ihr reiner Code Ruby lebt meist unter
/app/
(app/models
,app/views
app/controllers
,app/helpers
) und/lib/
. Ihre statischen Assets, geschichteten JS / Coffee-Includes und CSS / Sass / etc-Includes werden enthalten sein/app/assets
.Um zu verstehen, warum das Auseinanderbrechen einer Ruby-Klasse so einfach ist, müssen Sie ein wenig über das Tippen von Enten lesen und verstehen, dass Rubys Benutzeroberflächen nicht so einfach sind, wie Sie es in einer weniger dynamischen Umgebung gewohnt sind.
Hier sind einige Links, die Sie interessieren könnten:
Kurze Beschreibung der Ententypisierung ( Yehuda Katz Blogpost )
Die unschätzbare Sandi Metz darüber, wie und warum man OO-Programme entwirft, die einfach zu lesen, zu verstehen und zu ändern sind ( 2-stündiger Ruby Rogues-Podcast ) ( Ihr fantastisches Buch )
Der Rails-Entwickler David Heinemeier Hansson über die Asset-Pipeline und die damit verbundenen Code-Layout-Probleme ( RailsConf-Keynote-Video )
Machen Sie Ihr eigenes Juwel ( Rubygems.org HOWTO )
Viel Glück bei Ihren Projekten!
quelle
In Ruby werden Bibliotheken als Edelsteine bezeichnet (siehe http://www.ruby-lang.org/en/libraries/ ) und werden ähnlich wie .NET-Klassenbibliotheken verwendet.
quelle