Comment fonctionne ruby on rails?
Je suis un développeur PHP qui connaît un peu Ruby. Je veux apprendre Ruby on Rails, mais la plupart des ressources que j'ai rencontrées traitent la fonctionnalité RoR comme "magique" - c'est-à-dire qu'elle a une certaine cohérence interne, mais ne vous embêtez pas à demander comment cela fonctionne en termes de Ruby, MySQL, etc.
Quoi qu'il en soit, je veux une compréhension profonde du fonctionnement de RoR, des décisions de conception qui ont été prises pour le construire, etc. En particulier, je suis intéressé par ActiveRecord, mais vraiment je suis à la recherche de l'ensemble paquet.
Tous les livres / sites / conseils bienvenus.
10 réponses
Les livres "Agile Web Development with Rails" et "The Rails Way" sont tous deux plutôt bons. "Pro Active Record" va vraiment en profondeur pour Active Record, mais ne touche pas trop d'autre chose. Le podcast Railscasts utilise parfois juste la magie, mais parfois il explique ce qui se passe vraiment. Divers blogs tels que Art of Mission {[2] } peuvent entrer dans ce que vous cherchez.
De plus, l'utilisation de la gemme ruby-debug vous donne une bien meilleure compréhension de ce qui se passe - vous pouvez entrez dans ce qui se passe dans les coulisses.
Il y a deux domaines ici qui peuvent être examinés séparément:
Concepts généraux (qui incluent des modèles de conception, des principes généraux d'attitude comme DRY et CoC ou même l'agilité, etc.) puisqu'ils sont les principes derrière de nombreuses décisions de conception dans Rails. Chacun de ces concepts peut être étudié indépendamment de Rails (puisqu'il s'agit de concepts de programmation généraux). Il est bon d'avoir au moins une certaine compréhension de ces avant de creuser plus profondément. Il existe de nombreuses sources à ce sujet principes généraux sur le net (le site de Martin Fowler mentionné ci-dessus est l'une des meilleures sources pour saisir de tels concepts).
The way Rails implémente ces concepts dans son corpus. Il y a encore deux choses à avoir à l'esprit ici. Puisque Rails exploite fortement les fonctionnalités de sa langue maternelle, il est crucial de comprendre les particularités de Ruby (telles que les mixins et beaucoup de fonctionnalités dynamiques de Ruby). La dernière chose à comprendre est comment Rails utilise ces fonctionnalités, IE. comment il est décomposé en classes et modules, combien de ses fonctionnalités sont créées dynamiquement sur la course et ainsi de suite. A cet effet, je recommande fortement Livre Ruby pour Rails de David A. Black (qui est exactement sur Ruby, ses particularités et la façon dont Rails les utilise). Bien que ce livre puisse être un peu obsolète, je pense qu'il est toujours inestimable dans son contenu.
Si vous voulez vraiment savoir comment il fonctionne, vous pouvez juste regarder le code source. Les documents API en ligne vous permettent de voir le code source de chaque méthode directement dans la page de documentation.
ActiveRecord dans Rails est basé sur le modèle Active Record de Martin Fowler . C'est essentiellement un ORM (object-relational mapper). Ce n'est même pas très sophistiqué en ce qui concerne les ORM. La Persistance Java avec Hibernate a un bon aperçu des concepts ORM communs.
Celui - ci pourrait bien convenir ici aussi - > http://railsforphp.com/
C'est une sorte de réponse tangentielle à votre question, mais moi aussi, je suis passé du développement PHP à Ruby/Rails dev, et c'était une grande transition pour moi. En tant que développeurs PHP, Nous avons l'habitude d'entrer dans le nitty-gritty, de parler, et de ne pas être empêchés de regarder sous le capot.
Par conception, Rails est une boîte noire. Vous êtes censé apprendre les Rails, presque comme une langue elle-même. C'est une nouvelle façon de penser du développement web, en particulier du point de vue D'un développement PHP, bien que cette idée ne l'est pas rare à la programmation en général.
Ne pas prendre la peine de regarder sous le capot peut être la meilleure façon de commencer à faire les choses "the Rails way."
Jamis Buck a une belle série d'articles " sous le capot " sur son blog qui couvrent certains aspects des internes de Rails.
"magie" dans les Rails implique method_missing
et le concept de métaprogrammation. Dave Thomas de La Pragmatique Programmeurs créé un ensemble de screencasts sur la métaprogrammation Ruby.
PHP a un peu l'équivalent de la fonction appelée __call
, et PHP 5.3 introduit __callstatic
. Vous pouvez jeter un oeil à ceux-ci, ainsi que rechercher Google pour "PHP metaprogramming", pour du matériel de lecture sur l'implémentation D'un comportement de type Rails dans PHP.
J'ai trouvé ce site une bonne référence de départ:
Http://www.tutorialspoint.com/ruby-on-rails-2.1/index.htm
Il suppose MySQL dans ses exemples.
Je suis sûr que vous pouvez trouver des tas et des tas en googlant simplement pour "ruby on rails tutoriels", cependant.
Ruby metaprogramming magic in rails: regardez les livres de Rappin "Professional Rails" et Ediger "Advanced Rails", en plus du noir "Ruby for Rails" mentionné ci-dessus
Les conventions de nommage sont importantes:
Http://rails.wincent.com/wiki/Rails_conventions
Http://www.softiesonrails.com/2007/10/18/ruby-101-naming-conventions
Si vous voulez vraiment comprendre Rails, lisez la source pour le bit de Rails que vous voulez.
/ Library / Ruby / Gems / 1.8/ gems / sur OSX ou freeze rails et y avoir accès dans votre répertoire RAILS_ROOT/ vendor /