Wie organisiere ich mein Railsprojekt


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Hallo Mario,

Am 12.10.2007 um 10:27 schrieb Mario Schroeder:

eine Frage, die etwas entfernt mit Rails zu tun hat, aber für mein
Railsprojekt wichtig ist, weil es sehr schnell wachsen wird und
andere Entwickler dazu stossen werden.

Die Prozesse die abgebildet werden müssen sind erfasst.

Also Dinge wie Check-In-Zyklus, CI, Deployment?

Die Weboberfläche ist designed

Das ist meiner Erfahrung nach von Vorteil (also wenn die Oberfläche
am Anfang schon steht).

Wann entwerfe ich das Datenbankmodell und kann ich das zu einem
späten Zeitpunkt erweitern und/oder migrieren?

Während der Entwicklung. Rails ist explizit darauf ausgelegt das
Datenmodell iterativ zu entwickeln und entsprechend und migrieren:
http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations

Was aber viel wichtiger ist. Wie organisiere ich meine Arbeit am
besten, dass neue Entwickler schnell und einfach den Einstieg
finden können.

Rails sieht ja ein Standard-Projektlayout vor, daher ist es meiner
Erfahrung nach sehr einfach sich in neue Rails-Anwendungen einzulesen
und sich schnell zurecht zu finden.

Dokumentation ist gut, aber gibt es dafür gute Tools oder genügt
die Dokumentation im Quellcode?

Zum einen gibt es ja Rdoc (für Doku-Generierung aus dem Code). Außer
bei “Library-artigen” Funktionaltäten verwende ich das bei Rails
eigentlich sehr selten. Controller sind meist selbsterklärend (wenn
man sie entsprechend schlank hält) und die Models sind auch meist
sehr deskriptiv.

z.B.
class User < AR::B
has_many :tickets
acts_as_searchable
end

Das braucht nun wirklich keine weitere Doku mehr. Meist reicht es,
wenn man Code, der auf den ersten Blick nicht verständlich ist in
eine Methode mit sprechendem Namen zu extrahieren und man kann sich
die zusätzliche Doku sparen.

z.B.

user can receive credits after 3 months of membership

if user.created_at < 3.months.ago
send_credits
end

vs.

if user.can_receive_credit?
send_credits
end

und im User dann eben

def can_receive_credit?
user.created_at < 3.months.ago
end

Um zu kommunizieren “warum” man etwas tut, gibt es ja noch die Tests
(wenn man Test::Unit verwendet) oder Specs (bei RSpec).

Meine persönliche Einstellung zum Thema Doku ist etwa so:
Folgende Fragen will man ja gewöhnlich beantworten:
“Wie wird etwas getan?” → Code
“Was wird getan?” → Code (vor allem sprechende Methodennamen)
“Warum wird etwas getan?” → Tests

Kommentare sind meiner Meinung dann sinnvoll, wenn man irgendwelche
obskuren Dinge tut und direkt im Code kommunizieren möchte warum dies
so ist

We have to use the strange format YYYY-DD-MM here, because the

external interface wants it that way

Das war zwar jetzt irgendwie alles sehr allgemein geraten, aber hat
dann doch mit Rails/Ruby zu tun, weil man da aufgrund der Art wie
Ruby als Code aussieht, mit relativ wenig Kommentaren/Doku auskommt.

Just my 2 cents… YMMV :slight_smile:

Gruß,
Hendrik