19 Stimmen

Ist Rails eine Black Box?

Ich habe in letzter Zeit einige einfache Rails-Apps entwickelt. Ich weiß, Ruby ziemlich gut, aber wenn ich begann, Dinge zu tun "die Rails Weg" Ich bemerkte, dass einige Dinge getan wurden "nur weil" und es ist schwer für einen (Rails) Neuling zu wissen, was tut der Code tun.

Hat die Schiene ihren Sinn verfehlt und ist zu einer Art Sprache der vierten Generation geworden? Ich meine, man MUSS einige Dinge tun (die man nicht verstehen muss), um Rails-Websites zu entwickeln, und die Alternative ist, den Quellcode zu erforschen, um herauszufinden, was was tut.

Ich habe auch gesehen, dass die Leute jedem, der gute Rails-Tutorials machen konnte, Geld gezahlt haben... Wir sprechen über ein Framework, das die Einfachheit an die erste Stelle setzt, ist es notwendig, für gute Tutorials zu bezahlen?

Verstehen Sie mich nicht falsch, ich glaube, dass Rails sehr gute Ideen in den Mainstream gebracht hat (wie Konvention über Konfiguration), aber hat diese übermäßige Vereinfachung ("fügen Sie einfach diese Codezeile ein und ... es funktioniert!") die Einfachheit reduziert, die das Framework zu erreichen versuchte?

3voto

Pablo Fernandez Punkte 98441

Ich glaube, dass die "Kenntnis der Konventionen" nicht das Problem ist. Ich weiß, wenn ich X mache, dann funktioniert Y. Aber was macht X? Rails erscheint mir wie eine Blackbox, und ironischerweise, wenn es von "Konvention über Konfiguration" spricht, ist der gesamte Prozess der Erstellung einer Rails-Anwendung mehr wie Konfiguration als Programmierung.

Ich hatte diese seltsame Ausnahme vor einer Weile, wenn ein Beispiel von Jruby auf Rails (Ola Bini) .... folgen

CreateProductCategories wird nicht vermisst Konstante ProductType!

Dies geschah, weil die Schienenversionen unterschiedlich waren, aber der Punkt ist... alles ist in Ordnung, bis man den goldenen Pfad verlässt und die Blackbox einem nicht mehr hilft, und DANN stellt man fest, dass man keine Ahnung hat, was man die ganze Zeit getan hat und beginnt, in Foren / Mailinglisten um Hilfe zu bitten (und dann findet man heraus, dass die meisten Leute nicht wissen, was sie getan haben oder warum, nur dass es funktioniert hat).

Jedenfalls ist es gut zu wissen, dass ich nicht verrückt bin und dass einige Leute mit dieser Art von Problemen zu kämpfen haben. Vielen Dank an alle.

PS: Englisch ist nicht meine natürliche Sprache. Wenn Sie also grammatikalische Fehler finden, bearbeiten Sie sie bitte.

2voto

Pedro Punkte 403

Ich habe ein paar kleine Kenntnisse darüber, wie Rails-Interna funktionieren, und ich hoffe wirklich, dass die Arbeit, die Katz für Rails 3.0 macht, Rails-Interna viel leichter verständlich und vor allem viel besser dokumentiert machen wird. AFAIK hat er einige gut definierte Schnittstellen zwischen den "Modulen/Layern" geschaffen, z.B. teilen sich alle ORMs eine gemeinsame Schnittstelle, so dass man nicht nur in der Lage sein wird, den ORM zu ersetzen, sondern auch die Schnittstelle, die Rails und den ORM miteinander verbindet, leicht zu verstehen.

Entgegen der landläufigen Meinung halte ich Rails für ein sehr schwieriges Framework, viel mehr als reines PHP. Verlassen Sie sich auf ein Framework, das Sie nicht verstehen, haben einige Folgen, und lernen Rails Interna ist nicht einfach, auch für erfahrene rubyist.

Im letzten Monat habe ich mindestens 3 oder 4 Edelsteine hinzugefügt und im Monat davor habe ich meinen Arbeitsablauf komplett geändert, indem ich Gurken zu meinem Prozess hinzufügte, aber das ist wohl der Preis, den ich dafür zahle, dass ich in der IT-Branche tätig bin.

1voto

Ich stimme mit Bryan M. überein.

Es gibt so viel schwarze Magie und unheimliche Dinge, Tausende von Codezeilen, Meta-Meta-Programmierung am laufenden Band.

Aber fairerweise muss man sagen, dass Rails mir so viel beigebracht hat, wie spezifizierungsgetriebene Entwicklung, REST und gutes Ruby-Verständnis.

Im Moment bin ich an einem Punkt angelangt, an dem 20 % der Zeit reibungslos verlaufen und ich die anderen 80 % damit verbringe, gegen die Rails-Konventionen zu kämpfen. Ich fühle mich so viel produktiver, wenn ich reines Ruby schreibe.

Irgendwann schien Merb eine Option zu sein, beim nächsten Projekt gehe ich mit Rack/Sinatra und CouchDB.

0voto

srboisvert Punkte 12579

Pablo, Sie sollten sich vielleicht Django ansehen, das von einer Gruppe entwickelt wird, die sich auf die Bereitstellung einer qualitativ hochwertigen Dokumentation als Priorität konzentriert hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X