2009-01-17 15 views
6

Cuando comencé a buscar en Rails y Django, los desarrolladores de Django me alejaron de Rails y pensé que Rails era una caja negra que usa un exceso de "magia" (abstracciones con fugas). Después de explorar Rails más allá, me pregunto si se trata de una suposición desinformada basada en no saber cómo lograr la personalización en Rails sin el uso de andamios. El andamiaje en sí mismo parece esconderse mucho, pero una vez que comprenda cómo crear un proyecto sin él, Rails parece ser tan personalizable como Django. ¿Es esto un malentendido de mi parte o por parte de los críticos "mágicos" de Rails?¿Es justo acusar a Rails de "magia"?

Respuesta

10

Rails hace un uso extensivo de las funciones de metaprogramación de Ruby para hacer mucho del trabajo pesado para usted, pero no hay magia —, al final todo es código y puede entenderse con suficiente tiempo y esfuerzo.

El andamio siempre fue pensado como una manera de comenzar a funcionar con la realización de operaciones CRUD en sus modelos rápidamente. La intención siempre fue que los andamios se reemplacen con su código de producción real.

5

No tomaría la recomendación de Pythonista sobre Rails más de lo que diría la opinión de un Rubyista sobre Django, a menos que demuestren un nivel razonable de comprensión de ambas plataformas, al menos, y hay pocas que puedan hacerlo.

Los marcos tienen (para mi comprensión limitada en el lado de Django) arquitecturas similares pero crecieron de manera diferente y aprovechan las fortalezas de los diferentes idiomas.

Estoy de acuerdo en que Rails tiene una buena cantidad de "magia", y la cosa convention-over-configuration es una gran parte del marco. Puedo ver que eso podría ser desagradable para un experto en Python, y eso es probablemente justo. Una de las fortalezas relativas de Ruby son las capacidades de metaprogramación que hacen que la magia suceda. Quizás por eso, generalmente parece que monkey-patching en Python se considera sospechoso, mientras que en Ruby es un lugar común. No es una cosa mejor o peor, simplemente diferente.

Honestamente creo que puede pasar un buen rato desarrollando en cualquiera de las plataformas. Sugiero que pasen dos o tres días construyendo una aplicación simple en cada uno e ir con la que más te gusta. Me interesaría ver los comentarios que elijas y por qué.

1

No veo cómo los rieles se pueden ver como una caja negra. Usted tiene la fuente. Parte del rubí es un poco complicado y la metaprogramación puede hacer que las cosas sean difíciles de rastrear, pero todo está ahí para que lo veas. Además, la crítica de los andamios no tiene sentido a menos que estén hablando de los viejos andamios en lugar de los andamios generados que solo crean plantillas de códigos muy básicas que están ahí para ver.

Supongo que el djangoist no estaba desinformado, pero que realmente querían decir algo más como ese rails usa demasiado ruby ​​complicado y pisa fuerte en algunas cosas que no deberían hacer al parchear clases de ruby. Ese es un caso que podría hacerse.

Por supuesto que realmente no deberían desaprovechar los rieles porque estoy bastante seguro de que Djangos come bebés en Australia.

5

¿Qué crees que es Merb? Es la bandera de los desarrolladores de Rails que se rebelan contra demasiada magia en Rails.

Rails 3 es un intento de reducir la magia, extraer muchas partes de Merb y limpiar las cosas.

¿Realmente hay demasiada magia? Quizás, pero recuerda esto. Rails es básicamente una colección de DSL (Domain Specific Languages) que se unen como un marco para el desarrollo web.Es por eso que es muy limpio, es un lenguaje para rutas, plantillas, ORM, etc. Para hacer DSL limpias, debes extender Ruby, que requiere bien, algo de magia o metaprogramación.

Django no hace eso, no sería la forma de Python. No es mejor o peor, solo distintamente diferente.

Ahora ha preguntado, ¿hay demasiada magia en Rails?

Recuerde Arthur C Clark's Third law of prediction: Cualquier tecnología suficientemente avanzada es indistinguible de la magia.

Así que tal vez ese desarrollador amigo suyo solo decía que Rails es una tecnología demasiado avanzada para que se sientan cómodos usando.

Para mí puedo leer la fuente de Rails y descubrir qué está pasando. Claro que es complicado en algunos lugares, pero siempre he podido recorrer la fuente, leer las extensas pruebas de unidades y saber cómo funciona. El kernel también es una locura complicada, pero no nos negamos a usarlo por ese motivo, ¿verdad?

2

Puede que le resulte útil pasar algún tiempo leyendo las respuestas anteriores a las variaciones de esta pregunta (por ejemplo, he explicado mi opinión al respecto here).

1

Creo que el concepto de "justo" está mal aquí. Todo es una cuestión de gusto. Estoy horrorizado de que los rieles de monos enrojecen los tipos de rubíes incorporados (resultando en cosas como "5 días"). Considero esta magia. Algunos rubyistas podrían considerarlo ingeniería sólida.

Creo que es objetivo decir que Rails hace muchas cosas no obvias en el tiempo de ejecución de tu idioma. Si considera que esto es bueno o malo, depende de usted.

Cuestiones relacionadas