2008-10-15 24 views
32

Ich bin ein PHP-Entwickler, der ein bisschen Ruby kennt. Ich möchte Ruby on Rails lernen, aber die meisten der mir bekannten Ressourcen behandeln RoR-Funktionen als "magisch" - dh sie haben eine gewisse interne Konsistenz, aber fragen Sie nicht, wie es in Bezug auf Ruby funktioniert, MySQL, etc.Wie funktioniert Ruby on Rails?

Wie auch immer, ich möchte ein tiefes Verständnis davon haben, wie RoR funktioniert, die Designentscheidungen, die in den Aufbau der Software einflossen, etc. Insbesondere bin ich an ActiveRecord interessiert, aber wirklich bin ich auf der Suche nach dem ganzen Paket .

Alle Bücher/Websites/Beratung willkommen.

+0

Für ein tieferes Verständnis von Rails hilft es, Einblick in Design und Implementierung haben von Schienen selbst. Siehe meine [Antwort] (http://Stackoverflow.com/a/22155376/452885) auf dieser anderen [ähnliche Frage zum Verständnis der Konventionen von Rails] (http://stackoverflow.com/questions/3554054/what-are- all-the-conventions-für-ruby-on-rails) – GuruM

+0

Siehe auch: [ActiveRecord - Schienen unter der Haube] (http://weblog.jamisbuck.org/2006/11/20/under-the-hood-activecrecord -base-find-part-2), [Routing DSL - Schienen unter der Haube] (http://weblog.jamisbuck.org/2006/10/2/under-the-hood-rails-routing-dsl), [ Rails Routing von außen in] (http://guides.rubyonrails.org/routing.html) – GuruM

Antwort

22

Die Bücher "Agile Web-Entwicklung mit Rails" und "The Rails Way" sind beide ziemlich gut. "Pro Active Record" geht wirklich intensiv in Active Record, berührt aber nicht zu viel anderes. Der Podcast Railscast verwendet manchmal nur die Magie, aber manchmal erklärt es, was wirklich vor sich geht. Verschiedene Blogs wie Art of Mission können in was Sie suchen.

Darüber hinaus erhalten Sie mit dem Ruby-Debug-Juwel ein viel besseres Verständnis für das, was vor sich geht - Sie können in das eintauchen, was hinter den Kulissen läuft.

+2

Ich würde die Agile Web Development mit Rails buchen. – tvanfosson

+1

Für tiefes Verständnis, würde ich mit "The Rails Way" gehen – rickmzp

5

Dies ist eine Art tangentiale Antwort auf Ihre Frage, aber ich kam auch von PHP-Entwicklung zu Ruby/Rails Dev, und es war ein großer Übergang für mich. Wie PHP entwickelt, sind wir es gewohnt, ins Wesentliche zu gehen, um zu sprechen und nicht daran gehindert zu werden, unter die Haube zu schauen.

Durch Design ist Rails eine Blackbox. Du solltest Schienen lernen, fast wie eine Sprache selbst. Es ist eine neue Art des Denkens über Web-Dev, insbesondere aus der Perspektive eines PHP-Entwicklers, obwohl diese Idee für die Programmierung allgemein nicht ungewöhnlich ist.

Nicht die Mühe, unter die Haube zu schauen, kann der beste Weg sein, Dinge zu tun "den Weg von Rails".

+2

Ich bin anderer Meinung über Rails als Black Box. Es ist Open Source, und ich schaue oft in Stücke, um herauszufinden, warum irgendein seltsames Verhalten, das ich nicht erwarte, vor sich geht. Außerdem, wenn Sie sich ein wenig umsehen, patchen viele Leute verschiedene Stücke in ihren Blogs, und einige davon werden sogar akzeptiert, um Kern. –

+1

Aus PHP kommend, können Ruby und Rails wie eine ganz andere Welt erscheinen. Wenn Sie Erfahrung mit CodeIgniter, Cake oder Kohana haben, wird Rails einfacher zu ranken.Ruby selbst einfach und elegant ist, wenn Sie aufhören zu versuchen, es zu benutzen, wie Sie :) – robsymonds

+0

, PHP wäre Es ist sehr einfach unter die Haube zu bekommen nur die Quelle öffnen, dann ist es eine interpretierte Sprache, die alle die Quelle, die Sie brauchen, direkt auf Ihrem Computer Sie müssen es nur lesen. Dem stimme ich nicht zu. – nitecoder

9

Wenn Sie wirklich wissen wollen, wie es funktioniert, können Sie nur den Quellcode anschauen. Mit der online API docs können Sie den Quellcode jeder Methode direkt auf der Dokumentationsseite sehen.

ActiveRecord in Rails basiert auf Martin Fowlers Active Record pattern. Es ist im Grunde ein ORM (objektrelationaler Mapper). Es ist nicht einmal so ausgefeilt wie ORMs. Java Persistence with Hibernate hat einen guten Überblick über gebräuchliche ORM-Konzepte.

5

Jamis Buck hat eine schöne Reihe von "Under the Hood" -Artikeln auf seinem blog, die einige Aspekte von Rails Interna abdecken.

+0

[Active - Schienen unter der Haube] (http://weblog.jamisbuck.org/2006/11/20/under-the-hood-activerecord-base-find-part-2), [Routing DSL - Rails Under die Kapuze] (http://weblog.jamisbuck.org/2006/10/2/under-the-hood-rails-routing-dsl) – GuruM

13

Es gibt zwei Bereiche hier, die separat untersucht werden können:

  1. Allgemeine Konzepte (die Entwurfsmuster umfassen, allgemeine Haltung Prinzipien wie DRY und CoC oder sogar Beweglichkeit etc.), da sie die Prinzipien hinter vielen Designentscheidungen in Rails. Jedes dieser Konzepte kann unabhängig von Rails studiert werden (da es sich um allgemeine Programmierkonzepte handelt).Es ist gut, zumindest ein wenig Verständnis für diese zu haben, bevor Sie tiefer graben. Es gibt viele Quellen über solche allgemeinen Prinzipien im ganzen Netz (die oben erwähnte Website von Martin Fowler ist eine der besseren Quellen, um solche Konzepte zu verstehen).

  2. Die Art und Weise, wie Rails diese Konzepte in seinen Corpus implementiert. Auch hier sind zwei Dinge zu beachten. Da Rails Merkmale seiner Muttersprache stark ausnutzt, ist es wichtig, die Besonderheiten von Ruby zu verstehen (wie Mixins und viele dynamische Ruby-Funktionen). Die letzte Sache zu verstehen ist wie Rails diese Funktionen verwendet, dh. wie es in Klassen und Module unterteilt ist, wie viele seiner Features dynamisch im Lauf erstellt werden und so weiter. Zu diesem Zweck empfehle ich Buch Ruby for Rails von David A. Black (das ist genau über Ruby, seine Besonderheiten und die Art, wie Rails sie verwendet). Auch wenn dieses Buch ein bisschen veraltet sein könnte, denke ich, dass es in seinem Inhalt immer noch von unschätzbarem Wert ist.

0

Wenn Sie wirklich Rails verstehen wollen, lesen Sie die Quelle für das Bit von Rails, die Sie wollen.

/Library/Ruby/Gems/1.8/gems/ auf OSX oder freeze Schienen und haben Zugriff auf sie in Ihrem RAILS_ROOT/Verkäufer/Verzeichnis