ruby-on-rails - que - ruby on rails tutorial español
¿Por qué los profesionales de Ruby on Rails NO usan Andamios? (7)
Creo que la mayoría de los profesionales evitan el andamiaje porque prefieren un enfoque de desarrollo basado en pruebas para escribir el código de producción. Esto significa que primero quieren escribir una prueba que falla y luego escribir el código que hace pasar la prueba. Esta es una gran manera de producir código fuerte, pero funciona mejor a un nivel muy granular. El andamiaje parece hacer demasiado al mismo tiempo y, por lo tanto, interrumpe un ciclo estrecho de redacción de una prueba fallida para características específicas y luego escribe el código que hace que pase esa característica en particular. Puede ser más importante entrar en ese hábito más allá de la facilidad de uso de andamios.
Dicho andamio puede ser bastante poderoso por derecho propio.
Leí a veces de personas que parecen estar trabajando con rieles desde hace más tiempo, esa importante lección que aprendieron sería "No usar andamios". También en IRC leo comúnmente sugerencias desde esta dirección. Mi pregunta es por qué, ¿qué tiene de malo? ¿Y es nifty_scaffolding malo también?
Supongo que es malo porque genera por defecto una versión xml de la acción de tu controlador, que expondría los nombres de campo de nuestra aplicación a cualquiera y la haría más vulnerable a los ataques, ¿así que tal vez sea esto?
¿Cuáles son tus razones para no hacer andamios?
Creo que los andamios son muy buenos para verificar las novedades de las nuevas versiones de rieles (por ejemplo, ahora en rieles 4, los params permiten cosas en un controlador). Puede usarlo para crear rápidamente prototipos. A menudo es simple no es necesario generar un andamio completo.
El andamio no es realmente para uso de producción. Está destinado a obtener una aplicación iniciada rápidamente y luego se puede modificar o eliminar.
El andamiaje de Rails 3 es realmente bastante decente, pero todavía le faltan algunas cosas, como una forma de manejar recursos anidados, y no usa la respond_with
más respond_with
(a través de respond_to
, lo que fomenta la verbosidad donde no es necesaria o bienvenida).
Es poco probable que los formularios de andamio predeterminados también funcionen sin modificaciones; es probable que tenga relaciones entre sus modelos que se traducen a una columna en la base de datos como user_id
. Al crear un andamio de un modelo con una relación, esta columna aparece como un campo de texto en el formulario cuando claramente debe deducirse de la URL o seleccionarse a través de otra interfaz, más fácil de usar.
Hay muchos pequeños detalles como este que hacen que los andamios sean un candidato poco probable para el código de producción lista para usar. Sin duda, puedes construir una aplicación generando el andamio y luego completando las lagunas y limpiando las áreas que no necesitas, y sospecho que la mayoría de los desarrolladores de Rails hacen esto hasta cierto punto.
Es importante entender el uso de los rieles generando andamios y ser consciente de sus limitaciones. El andamiaje te ayuda a hacer que algo funcione rápidamente y probar una suposición. Pero en el mundo real no te llevará demasiado lejos. Digamos que creaste un modelo con andamios
rails generate scaffold Article title:string body:text
¡Estupendo! Ahora tienes un prototipo listo. Pero ahora digamos que tiene que agregar otro campo "autor".
rails generate migration add_to_article_author author:string
rake db:migrate
ahora los artículos de la tabla tienen una nueva columna, pero los archivos en / app / views / articles están en el mismo estado anterior, es decir, el formulario no tendrá campo de autor, etc. Si ejecuta el andamio nuevamente
rails generate scaffold Article title:string author:string body:text --skip-migration
Esta vez ha agregado --skip-migrate porque eso ya se ha hecho antes y Rails realmente se quejará si tuviera que migrar la misma tabla de nuevo. Ahora el andamio le pedirá que sobrescriba el archivo que creó la primera vez. La sobrescritura también destruirá cualquier cambio que haya realizado en su controlador /app/controllers/article_controller.rb o verá archivos como /app/views/article/show.html.erb o index.html.erb
Como cualquier aplicación Rails que valga la pena tiene un código personalizado (y no un código repetitivo creado por el andamio), un programador de Rails debe usar el andamio solo para probar una idea. Use andamios para darle a su cliente algo con lo que jugar. Pero en el mundo real, el código del andamio repetitivo no se usa.
La gente hasta ahora ha dicho que los programadores experimentados de rieles no usan andamios, y por buenas razones principalmente. Abogo por que los principiantes no usen andamios tampoco.
Es posible que hayas estado andando felizmente durante algún tiempo con el andamiaje, y luego te das cuenta de que olvidaste incluir el campo booleano published
para tu modelo de publicación, por lo que generas una migración para agregar el atributo a la tabla (has logrado trabajar que fuera). También debe averiguar cómo agregar eso a la forma que produjo el andamio. Luego, durante su vida no puede entender por qué no se actualiza cuando envía su formulario, y después de mucha lucha y tiempo perdido, se da cuenta de que no ha permitido la asignación masiva de ese atributo, como el andamio lo hizo por usted en los demás . Resulta que realmente no sabes nada sobre cómo funciona Rails.
Si estás aprendiendo Rails, entenderías mucho más acerca de MVC si construyeste el M the V y el C tú mismo.
No uso andamios por dos razones:
- El andamio de Rails pone todo en una tabla html - No me gusta eso
- Prefiero usar la gema rails_admin para mis páginas de administración por lo que no hay necesidad de 90% del código de andamio
Sus preocupaciones xml no son la razón por la cual la gente desaconseja el uso de andamios. No me molesto con las versiones XML de mis páginas, ya que duplica la cantidad de rutas que su aplicación debe generar, lo que a su vez aumenta un poco los gastos generales ...
Tengo experiencia con los raíles y rara vez uso andamios simplemente porque mi objetivo final está lejos de ser simples acciones de CRUD. Sin embargo, no hay una regla estricta para no usar andamios. Algunos codificadores fruncen el ceño porque es en realidad andamiaje , literalmente. No es un producto terminado. El andamio lo apoya a medida que construye el producto real. Busque imágenes de google para "andamios" y debería tener la idea.
Tenga en cuenta que el scaffold
es solo uno de los muchos generadores incorporados en Rails . Un generador de Rails es simplemente un script que genera un código genérico. Los generadores le ahorran mucho tiempo y rápidamente se encontrará escribiendo generadores para sus necesidades personalizadas.