Как работает ruby ​​на рельсах? - PullRequest
33 голосов
/ 15 октября 2008

Я разработчик PHP, который немного знает Ruby. Я хочу изучать Ruby on Rails, но большинство ресурсов, с которыми я сталкивался, рассматривают функциональность RoR как «магическую» - то есть она имеет определенную внутреннюю согласованность, но не спрашивайте, как она работает в терминах Ruby, MySQL и т. Д.

В любом случае, я хочу глубоко понять, как работает RoR, дизайнерские решения, которые повлияли на его создание и т. Д. В частности, я заинтересован в ActiveRecord, но на самом деле я ищу весь пакет.

Любые книги / сайты / советы приветствуются.

Ответы [ 10 ]

22 голосов
/ 15 октября 2008

Книги "Agile Web Development с Rails" и "The Rails Way" довольно хороши. «Pro ​​Active Record» очень подробно рассказывает об Active Record, но больше не затрагивает. Подкаст Railscasts иногда просто использует магию, но иногда объясняет, что на самом деле происходит. Различные блоги, такие как Art of Mission , могут найти то, что вы ищете.

Кроме того, использование гема ruby-debug дает вам намного лучшее понимание того, что происходит - вы можете вмешаться в то, что скрывается за кадром.

13 голосов
/ 15 октября 2008

Здесь есть две области, которые можно рассмотреть отдельно:

  1. Общие концепции (которые включают шаблоны проектирования, общие принципы отношения, такие как DRY и CoC или даже гибкость и т. Д.), Поскольку они являются принципами, лежащими в основе многих проектных решений в Rails. Любая из этих концепций может быть изучена независимо от Rails (поскольку они являются общими концепциями программирования). Хорошо иметь хоть какое-то понимание, прежде чем копать глубже. Есть много источников о таких общих принципах по всей сети (вышеупомянутый сайт Мартина Фаулера является одним из лучших источников для понимания таких концепций).

  2. Как Rails реализует эти концепции в своем корпусе. Здесь, опять же, нужно помнить две вещи. Поскольку Rails активно использует возможности своего родного языка, очень важно понимать особенности Ruby (такие как миксины и множество динамических функций Ruby). Последнее, что нужно понять, это как Rails использует эти возможности, т.е. как он разбит на классы и модули, как много его функций динамически создаются на ходу и так далее. Для этой цели я настоятельно рекомендую книгу Ruby for Rails от David A. Black (которая в точности посвящена Ruby, его особенностям и способам их использования в Rails). Хотя эта книга может быть немного устаревшей, я думаю, что она по-прежнему неоценима по своему содержанию.

9 голосов
/ 15 октября 2008

Если вы действительно хотите знать, как это работает, вы можете просто посмотреть на исходный код. онлайн API документы позволяют вам видеть исходный код каждого метода прямо на странице документации.

ActiveRecord в Rails основан на шаблоне активной записи Мартина Фаулера . Это в основном ORM (объектно-реляционный картограф). Это даже не так сложно, как ORM. Java Persistence с Hibernate имеет хороший обзор общих концепций ORM.

7 голосов
/ 20 октября 2008

Это тоже может подойти -> http://railsforphp.com/

5 голосов
/ 15 октября 2008

Jamis Buck опубликовал замечательную серию статей " Under the Hood " в своем блоге , в которых освещаются некоторые аспекты Rails.

5 голосов
/ 15 октября 2008

Это своего рода тангенциальный ответ на ваш вопрос, но я тоже пришел из разработки PHP к разработчику Ruby / Rails, и это был большой переход для меня. Как разработчики PHP, мы привыкли разбираться в мелочах, говорить, и нам не мешают заглянуть под капот.

По своей конструкции Rails - это черный ящик. Вы должны изучать Rails, почти как сам язык. Это новый способ мышления о веб-разработчике, особенно с точки зрения разработчика PHP, хотя эта идея не является чем-то необычным для программирования в целом.

Не беспокойтесь о том, чтобы заглянуть под капот, это может быть лучшим способом начать делать вещи "в стиле Rails".

4 голосов
/ 20 октября 2008

«Магия» в Rails включает в себя method_missing и концепцию метапрограммирования . Дейв Томас из Прагматичные программисты создали набор скринкастов по метапрограммированию Ruby .

PHP имеет несколько эквивалентную функцию под названием __call, а в PHP 5.3 введена __callstatic. Вы можете взглянуть на них, а также поискать в Google «php metaprogramming», чтобы найти некоторый материал для чтения по реализации Rails-подобного поведения в PHP.

4 голосов
/ 15 октября 2008

Я нашел этот сайт хорошей отправной ссылкой:

http://www.tutorialspoint.com/ruby-on-rails-2.1/index.htm

Предполагается, что MySQL в своих примерах.

Я уверен, что вы можете найти кучу и кучу, просто прибегая к помощи "учебников по ruby ​​on rails".

1 голос
/ 15 октября 2008

магия метапрограммирования ruby ​​в рельсах: посмотрите на книги Rappin "Professional Rails" и Ediger "Advanced Rails", в дополнение к упомянутому выше черному "Ruby for Rails"

Соглашения об именах важны:

http://rails.wincent.com/wiki/Rails_conventions

http://www.softiesonrails.com/2007/10/18/ruby-101-naming-conventions

0 голосов
/ 16 июля 2009

Если вы действительно хотите понять Rails, прочитайте источник нужного вам кусочка Rails.

/ Library / Ruby / Gems / 1.8 / gems / на OSX или замораживать рельсы и иметь доступ к нему в вашем каталоге RAILS_ROOT / vendor /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...