2008-10-15 27 views
32

Soy un desarrollador de PHP que conoce un poco de Ruby. Quiero aprender Ruby on Rails, pero la mayoría de los recursos que he encontrado tratan la funcionalidad RoR como "mágica", es decir, tiene una cierta consistencia interna, pero no te molestes en preguntar cómo funciona en términos de Ruby, MySQL, etc.¿Cómo funciona Ruby on Rails?

De todos modos, quiero una comprensión profunda de cómo funciona RoR, las decisiones de diseño que se tomaron para construirlo, etc. En particular, estoy interesado en ActiveRecord, pero realmente estoy buscando todo el paquete .

Cualquier libro/sitio/consejo de bienvenida.

+0

Para una comprensión más profunda de los carriles que ayuda a tener una visión del diseño e implementación de Rails en sí. Ver mi [respuesta] (http://stackoverflow.com/a/22155376/452885) en esta otra [pregunta similar sobre las convenciones de comprensión de Rails] (http://stackoverflow.com/questions/3554054/what-are- all-the-conventions-for-ruby-on-rails) – GuruM

+0

Vea también: [ActiveRecord - Rails Under the Hood] (http://weblog.jamisbuck.org/2006/11/20/under-the-hood-activerecord -base-find-part-2), [Routing DSL - Rails Under the Hood] (http://weblog.jamisbuck.org/2006/10/2/under-the-hood-rails-routing-dsl), [ Rails Enrutamiento desde el exterior en] (http://guides.rubyonrails.org/routing.html) – GuruM

Respuesta

22

Los libros "Desarrollo web ágil con rieles" y "The Rails Way" son bastante buenos. "Pro Active Record" es realmente profundo para Active Record, pero no toca demasiado. El podcast Railscasts a veces simplemente usa la magia, pero a veces explica lo que realmente está sucediendo. Varios blogs como Art of Mission pueden entrar en lo que estás buscando.

Además, el uso de la gema Ruby-Debug le proporciona una mejor comprensión de lo que está sucediendo; puede acceder a lo que se está ejecutando detrás de escena.

+2

Sería el segundo en el libro de Desarrollo web ágil con rieles. – tvanfosson

+1

Para una comprensión profunda, me gustaría ir con "The Rails Way" – rickmzp

5

Esta es una especie de respuesta tangencial a su pregunta, pero yo también vine del desarrollo de PHP a Ruby/Rails dev, y fue una gran transición para mí. Como desarrolladores de PHP, estamos acostumbrados a entrar en lo esencial, a hablar, y no se nos impide mirar debajo del capó.

Por diseño, Rails es una caja negra. Se supone que debes aprender Rails, casi como un lenguaje en sí mismo. Es una nueva forma de pensar en desarrollo web, especialmente desde la perspectiva de un desarrollador de PHP, aunque esta idea no es poco común para la programación en general.

No molestarse en mirar debajo del capó puede ser la mejor manera de comenzar a hacer las cosas "a la manera de los rieles".

+2

No estoy de acuerdo con que Rails sea una caja negra. Es de código abierto, y a menudo miro en pedazos para descubrir por qué está ocurriendo un comportamiento extraño que no estoy esperando. Además, si miras un poco, muchas personas están parchando varias piezas en sus blogs, y algunas incluso son aceptadas en el núcleo. –

+1

Viniendo de PHP, Ruby y Rails pueden parecer un mundo completamente diferente. Si tienes experiencia con CodeIgniter, Cake o Kohana, hará que Rails sea más fácil de asimilar.Ruby es sencillo y elegante una vez que dejas de intentar usarlo como lo harías con PHP :) – robsymonds

+0

Es muy fácil entenderlo, solo abre la fuente, es un lenguaje interpretado, toda la fuente que necesitas está ahí en tu computadora Sólo tienes que leerlo. No estoy de acuerdo con esto – nitecoder

9

Si realmente quieres saber cómo funciona, puedes simplemente mirar el código fuente. El online API docs le permite ver el código fuente de cada método directamente en la página de documentación.

ActiveRecord in Rails se basa en Martin Fowler's Active Record pattern. Básicamente es un ORM (asignador relacional de objetos). Ni siquiera es tan sofisticado en lo que respecta a los ORM. Java Persistence with Hibernate tiene una buena visión general de los conceptos de ORM comunes.

5

Jamis Buck tiene una buena serie de artículos "Under the Hood" en su blog que cubren algunos aspectos de las partes internas de Rails.

+0

[ActiveRecord - Rails Under the Hood] (http://weblog.jamisbuck.org/2006/11/20/under-the-hood-activerecord-base-find-part-2), [Routing DSL - Rails Under The Hood] (http://weblog.jamisbuck.org/2006/10/2/under-the-hood-rails-routing-dsl) – GuruM

13

Hay dos áreas de aquí que se pueden examinar por separado:

  1. Conceptos generales (que incluyen patrones de diseño, principios generales, como actitud seco y CdC o incluso la agilidad, etc.), ya que son los principios detrás de muchos decisiones de diseño en Rails. Cualquiera de estos conceptos puede estudiarse independientemente de Rails (ya que son conceptos generales de programación).Es bueno tener al menos alguna comprensión de estos antes de cavar más profundo. Hay muchas fuentes acerca de tales principios generales en toda la red (el sitio de Martin Fowler antes mencionado es una de las mejores fuentes para captar tales conceptos).

  2. La forma en que Rails implementa estos conceptos en su corpus. Hay, una vez más, dos cosas para tener en cuenta aquí. Dado que Rails aprovecha en gran medida las características de su lengua materna, es fundamental comprender las peculiaridades de Ruby (como mixins y muchas de las funciones dinámicas de Ruby). Lo último que debe entender es cómo Rails utiliza estas características, es decir. cómo se divide en clases y módulos, cuántas de sus características se crean dinámicamente en la ejecución, etc. Para este propósito, recomiendo reservar Ruby for Rails de David A. Black (que trata exactamente sobre Ruby, sus peculiaridades y la forma en que Rails las usa). Si bien este libro podría estar un poco desactualizado, creo que todavía tiene un valor incalculable en su contenido.

0

Si realmente quiere entender Rails, leer la fuente para el bit de rieles que desee.

/Library/Ruby/Gems/1.8/gems/ en OSX o rieles de congelación y tener acceso a ella en su RAILS_ROOT/vendor/