Generación automática a partir de esq uema?

Buenas, me gustaría saber si hay alguna herramienta en ruby para
generar automáticamente desde un esquema de base de datos todos los
modelos, controladores y vistas, añadiendo relaciones y demás.

Gracias

On 2/1/07, Luis V. [email protected] wrote:

Buenas, me gustaría saber si hay alguna herramienta en ruby para
generar automáticamente desde un esquema de base de datos todos los
modelos, controladores y vistas, añadiendo relaciones y demás.

Te recomiendo Java, C#, Hibernate, NHibernate, CodeSmith, Enterprise
Library, JavaBeans, etc.

En Rails las cosas se hacen de otra manera :slight_smile:

(De todos modos, si es que el esquema ya existe y lo que querés es
hacer una aplicación Rails desde cero, sería una buena práctica hacer
todo a mano!)

Luis V. wrote:

Buenas, me gustaría saber si hay alguna herramienta en ruby para
generar automáticamente desde un esquema de base de datos todos los
modelos, controladores y vistas, añadiendo relaciones y demás.

Gracias


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Pero… pero… pero… vos queres dejar a todos los programadores sin
curro!!! xDDD

Igual te cuento, hace tiempo tengo entre mis bookmarks esto:
http://magicmodels.rubyforge.org/

En realidad no hace todo lo que pedis, pero si genera las relaciones y
validaciones. De todas maneras nunca llegue a probarlo por lo tanto ni
te lo recomiendo, ni dejo de hacerlo. (que manera de lavarme las manosss
xD)

Si lo probas, conta que tal. :slight_smile:

Saludos.
Mauro.

PD.

  1. rake db:schema:load
  2. Profit! xD

Si lo que tienes es una base de datos legacy puedes intentar lo
siguiente

para generar la DB:

-configuras el database.yml para que conecte contra tu db

-ejecutas rake db:schema:dump. Esto te regenerará el fichero schema.rb

-el contenido de schema.rb lo copias en una migration y lo metes todo en
el método up. Si quieres poder utilizar AR, tendrás que eliminar del
código generado la parte de cada tabla donde dice :id=>false. Así
tendrás las PK creadas como id automáticamente.

-te instalas el plugin para FKs de redhill. De esta forma conforme se
creen las tablas se crearán los índices y las FKs.

-verificas que todas tus columnas que referencian a claves externas se
llaman nombredetabla_id o en su defecto modificas la migration para
añadirle la claúsula references en cada FK que lo requiera. Te aseguras
también de que ninguna de tus columnas que no sean FK acabe en _id o en
su defecto le metes un :references=>nil

-ejecutas rake db:migrate. Ya tienes tu flamante base de datos creada y
tu migration preparada para recrearla en otros entornos. Ten en cuenta
que el campo clave para todas las tablas será ahora el campo “id” (si
hiciste lo que te comentaba de eliminar lo de id=>false). Aquí hay que
tener en cuenta un detalle… como estarás creando las tablas y las FKs,
si las tablas no están en el orden adecuado te va a dar errores. Esto
quiere decir que si tienes una tabla con una FK a otra, necesitas que la
sentencia de creación de la tabla principal esté antes que la de la
relacionada. Que yo sepa no hay forma de ejecutar las migrations con las
constraints de la db desactivadas, básicamente porque las migrations por
defecto no entienden de relaciones. Si alguien sabe cómo hacer esto,
vendría bien que lo comentase :wink:


  • Para generar los controladores y los modelos puedes usar directamente
    ruby script/generate

  • Si quieres tener vistas automáticamente, puedes tirar del generador de
    scaffolds o de ajax_scaffolds también mediante ruby script/generate

Ya tienes tu aplicación (básica) con sus altas, bajas, modificaciones y
consultas preparada.

Saludos,

javier ramirez

p.s. lo mismo me he saltado algún paso porque esto te lo escribo de
memoria, pero la idea es ésa

Luis V. wrote:

Buenas, me gustaría saber si hay alguna herramienta en ruby para
generar automáticamente desde un esquema de base de datos todos los
modelos, controladores y vistas, añadiendo relaciones y demás.

Gracias


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Estamos de estreno… si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!

Luis V. wrote:

-ejecutas rake db:schema:dump. Esto te regenerará el fichero schema.rb
añadirle la claúsula references en cada FK que lo requiera. Te aseguras
sentencia de creación de la tabla principal esté antes que la de la

p.s. lo mismo me he saltado algún paso porque esto te lo escribo de

Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Bueno, para no ir uno a uno se puede hacer en una sola línea de bash:

$ for TABLE in cat ./db/schema.rb |grep create_table | awk -F \" '{print $2}'; do ./script/generate scaffold ${TABLE%\s};done

Aunque eso si, esto solo te serviría para tablas en plural y en
castellano porque lo único que trunco es la “s” del final… xD
De todas maneras el DRY esta bien, pero tanto tanto y tan automatizado
puede llegar a ser contraproducente porque descuidas cosas. Pero para
gustos, colores.

Saludos!
Mauro.

Gracias por las respuestas, pero me parece que no me entendisteis bien.

Ya he hecho un par de aplicaciones con Ruby On Rails y he usado
convenciones, generadores, migraciones, etc.

Lo que pasa es que habiendo un generate scaffold que te crea las
vistas, modelos y controladores a partir de una tabla, no sé como
alguien no ha hecho un generador para que no tengas que ir uno a uno.

Me parece relativamente sencillo programar algo así, por eso decía.