Artículo publicado: "La Era de los Frameworks: Ruby On Rails"

El año pasado me puse en contacto con la editorial MP Ediciones de Argentina para estudiar la posibilidad de escribir un libro con ellos. Entre medio de varias conversaciones sobre el tema, me invitaron a escribir un artículo para su Revista .Code. El contenido, por ser la primera vez que se tocaba el tema en la revista, explica como iniciarse en Ruby On Rails, partiendo desde la instalación en cualquiera de las dos plataformas más populares: Windows y GNU/Linux.

Este artículo se publicó recientemente en el número 26 de este mes, que calculo estará llegando a Uruguay el mes que viene.

Como "gaje del oficio", es siempre de esperar que el editor de turno modifique el contenido del artículo del autor, tal vez intentando mejorar la redacción, suprimiendo partes redundantes, o tal vez, disminuyendo el tamaño por una cuestión de espacio en la revista.

Generalmente, y este caso no es la excepción, una vez que el trabajo es entregado por el autor al editor, el resto es responsabilidad del último, no comunicando sus acciones al primero (hecho que no comparto mucho).

Para que el mismo no se pierda en el tiempo ni la intención original del mismo (entre otras cosas, dejaron solo la parte que habla de Windows), y por que finalmente yo soy el autor ;-), voy a publicar a continuación la "versión original y completa" de mi artículo.

Parafraseando a la película animada "La Era del Hielo", lo titulé de la siguiente manera ;-)

------------------------------------------------

DESARROLLO WEB AGIL

La Era de los Frameworks: Ruby On Rails

Ruby on Rails es un framework de desarrollo web diseñado para aumentar extremadamente la productividad y que está empezando a causar furor entre los desarrolladores expertos.

Introducción

Aproximadamente desde el año ‘97 que me desempeño como consultor en proyectos relacionados con Software Libre, y con el correr de los años, la temática de los mismos se ha orientado progresivamente al ambiente web. Desde mis inicios me he decantado por PHP, pues era (en mi experiencia) la mejor alternativa disponible entre los lenguajes de desarrollo web.

Descarté opciones propietarias como ASP, y otras Open Source como Perl, principalmente porque PHP me ofrecía la mayor libertad al más bajo costo.

Hasta el día de hoy sigo pensando lo mismo; pero algo ha cambiado. Cada vez disponemos de menos tiempo para concretar nuestros proyectos, necesitamos dar más valor agregado a nuestros desarrollos y debemos adaptarnos más rápido a los cambios: lo que sucede es que nos están obligando a ser cada vez más productivos.

Si hace algunos años que trabajas en ambientes web y no tienes la filosofía de reaprovechar los avances de tu desarrollo de software en beneficio de los proyectos futuros, estarás siendo parte de la famosa “fábrica de ruedas”, es decir, estarás reinventando la rueda de forma constante sin aprovechar la experiencia adquirida con el pasar de los años.

De esta forma, será imposible ser “extremadamente productivo”.

¿Qué es Ruby On Rails?

Como no debemos tener miedo a lo nuevo, a los cambios, y debemos estar informados y lograr hacer juicios de valor apoyados en experiencias reales y no en meras suposiciones, es que me animé experimentar con otras alternativas.

“Ruby On Rails”, muchas veces abreviado como RoR, significa en castellano “Rubí Sobre Rieles” y por definición es un Framework Open Source para Desarrollo Rápido de Aplicaciones Web. Si somos estrictos con la definición, el nombre está compuesto por dos palabras clave: Ruby por un lado y Rails por otro. En realidad el framework se llama simplemente Rails y fue desarrollado enteramente con el lenguaje de programación Ruby. A pesar de que usas Rails, en algún momento necesitarás escribir código en el lenguaje Ruby. Por todas estas razones es que el nombre combina ambas cosas: Ruby On Rails

Está basado fuertemente en una estructura con persistencia de datos, pero lo que no nos debe preocupar es que las grandes bases de datos del Software Libre se encuentran disponibles: por ejemplo MySQL y PostgreSQL.

El creador, David Heinemeier Hansson (DHH), desarrolló este framework para cubrir las necesidades de desarrollo de un proyecto web. Este programador danés ha sido galardonado por haber desarrollado este framework con el título ”Best Hacker 2005” en el evento O´Reilly Open Source Awards, organizado por Google.

Según ha expresado en entrevistas, el origen se debe a que tenía dos ámbitos de experiencia cuando comenzó con RoR: PHP (rápido y sucio) y Java/J2EE (lento y limpio). El objetivo de ROR era conseguir unir lo mejor de ambos (rápido y limpio).

El lenguaje de programación Ruby

Vale decir que llegamos indirectamente al lenguaje. A pesar que la mayoría de las distribuciones GNU/Linux incluyen (entre muchos lenguajes) a Ruby, este es un lenguaje que hasta hace poco tiempo no era extremadamente popular si no fuera por el éxito del framework. El autor del lenguaje Ruby se llama Yukihiro Matsumoto, de origen Japonés, y es más conocido por el seudónimo de Matz.

Entre sus cualidades se encuentra que es totalmente Orientado a Objetos (más que otros lenguajes muy populares), de alto nivel, y sobre todo, “divertido de programar” (según las palabras de su autor).

Concepto base I: el patrón MVC

Los Patrones de Diseño evitan que reinventemos la rueda para resolver problemas ampliamente conocidos y resueltos innumerables veces, y a su vez, hasta nos sirven de modelo para hacer soluciones "reutilizables" y "extensibles" porque aplican las mejores prácticas del Diseño Orientado a Objetos.

Este framework se basa en un patrón de diseño muy conocido, el “Modelo, Vista, Controlador” (MVC). La idea del patrón es separar el problema en tres capas: el modelo, que representa la lógica del sistema, la vista, que se encarga de mostrar la información del modelo, y el controlador, encargado de tomar las acciones del usuario del sistema e interactuar con el modelo y con la vista.

Diagrama que describe el funcionamiento de RoR

Nuestro sistema quedará estructurado en tres capas independientes que tienen responsabilidades distintas y bien diferenciadas, logrando que nuestro sistema sea más fácil de desarrollar y mantener.

Concepto base II: el patrón ActiveRecord

En Ruby On Rails el Modelo del patrón MVC se implementa a través del mapeo del “objeto” con su correspondiente “tabla” en la base de datos.


Representación UML del patrón de diseño ActiveRecord

Este patrón resuelve el eterno problema de la comunicación entre modelos de datos distintos, entre el Relacional y el Orientado a Objetos.

¿Cómo se instala?

Existe mucha información en Internet, pero a veces peca de inexacta o se comete pequeños errores. Si no tenemos experiencia en RoR, es frustrante iniciarse con tanta dificultad extra.

Instalación en Windows (3 pasos)

El primer y mejor tutorial que existe hasta el momento para hacer una instalación es de O'Reilly: Rolling with Ruby on Rails ("Rodando con Rubí sobre Rieles"), pero solo contempla al sistema operativo Windows. Por esa razón vamos a hacer una explicación que abarque a ambas instalaciones, que a pesar de que son muy parecidas, tienen pequeños detalles a tener en cuenta.

Paso 1: Instalar Ruby

Primer paso, bajar el instalador de Ruby desde RubyForge.org.

El instalador ya incluye el Gems, la aplicación que permite instalar el framework Rails, y que usaremos en el paso siguiente.



Pantalla de instalación de Rubyinstaller con las aplicaciones que incluye por defecto

Paso 2: Instalar Rails

Si ya tienes instalado Gems, solo debes abrir una ventana que permita escribir comandos desde la línea. Presiona desde la barra de tareas:

Botón de Inicio-> Ejecutar -> y escribe “cmd”

Al presionar ENTER deberá ejecutar una consola DOS que nos permitirá digitar los comandos del instalador del framework. Deberemos posicionarnos primero en el directorio donde instalamos Ruby (realizado en el Paso 1):

cd c:\ruby\bin

C:\ruby\bin>gem install rails --remote --include-dependencies

Attempting remote installation of 'rails'

Updating Gem source index for: http://gems.rubyforge.org

Successfully installed rails-1.0.0

Successfully installed activesupport-1.2.5

Successfully installed activerecord-1.13.2

Successfully installed actionpack-1.11.2

Successfully installed actionmailer-1.1.5

Successfully installed actionwebservice-1.0.0

Installing RDoc documentation for activesupport-1.2.5...

Installing RDoc documentation for activerecord-1.13.2...

[Mensaje resumido]

Si no se agrega el último parámetro ("incluir dependencias") por cada software que falte va a preguntar si quieres instalarlo, lo que sucede casi en seis oportunidades.

Paso 3: Instalar MySQL

Al principio, no debemos complicarnos. Si lo que queremos es probar el entorno de desarrollo, cuando el instalador de MySQL nos pregunte por el usuario administrador digitaremos “root” y su clave “root”. Más adelante podremos asegurar todas estas configuraciones.

Windows Essentials (x86) 4.1

http://dev.mysql.com/downloads/mysql/4.1.html

Instalación en GNU/Linux (3 pasos)

En mi caso particular uso GNU/Linux y no Windows para desarrollar. La distribución que estoy usando actualmente es Fedora Core 4. Las distribuciones no son todas iguales, y siempre tienen sus peculiaridades. De todas formas, no debiera existir mayores problemas con las indicaciones que detallaremos a continuación. Si no cuentas con algunas de las herramientas que menciono y que simplifican la instalación, siempre está la alternativa de bajar los fuentes e instalarlos a mano.

Paso 1: Instalar Ruby

Si la instalación de la distribución no incluyó por defecto a Ruby, lo puedes hacer desde los CD's. También puedes usar un instalador en línea, para bajar las últimas versiones de los paquetes desde Internet.

El más famoso es el apt-get de Debian. En el caso de Fedora GNU/Linux disponemos de Yum.


Con Yum, todo es más sencillo:

yum install ruby

Si la instalación concluye sin errores, ya estás casi pronto para empezar a trabajar.


Paso 2: Instalar “Gem”, el “Instalador de Rails”

Rails cuenta con un propio instalador en línea que se llama Gem (vendría a ser el Yum de Fedora GNU/Linux, pero solo sirve para instalar Rails). Para poder instalar el framework hay que bajar primero el Gem y luego correrlo para que inicie la instalación. La dirección oficial es: http://docs.rubygems.org/shelf y en la sección de download deberás bajar la última versión.

Cuando dispongamos del archivo comprimido de extensión tgz, lo descomprimes en tu directorio preferido, o en el directorio estándar para estas tareas: /opt.

tar zxvf rubygems-0.8.11.tgz


Y para instalarlo, luego de entrar en el directorio generado, hay que ejecutar:

cd rubygems-0.8.11
ruby setup.rb


En todas la pruebas realizadas, la instalación no dio errores.

Paso 3: Instalar Rails

Ya estamos prontos para instalar Rails usando nuestro instalador Gem.
La sintaxis deberá ser:

gem install rails --remote --include-dependencies


Si no agregas el último parámetro ("incluir dependencias") por cada software que falte te va a preguntar si quieres instalarlo, lo que sucede casi en seis oportunidades.

En este caso, sí surgieron problemas.

gem install rails --remote --include-dependencies

Attempting remote installation of 'rails'
Successfully installed rails-1.0.0
Successfully installed activesupport-1.2.5
Successfully installed activerecord-1.13.2
/usr/lib/site_ruby/1.8/rubygems/custom_require.rb:21:in `require__': no such file to load -- rdoc/rdoc (LoadError)


Esto significa que el software rdoc no se encuentra instalado en el sistema. Para solucionarlo simplemente ejecuté el Yum:

yum install rdoc

Installing:
rdoc i386 1.8.4-1.fc4 updates-released 119 k
Installing for dependencies:
irb i386 1.8.4-1.fc4 updates-released 62 k

[Mensaje resumido]

Y de paso, me avisa que hay una "dependencia a cumplir" que es instalar el irb, lo cual acepté.

Volví a correr la instalación del Rails y esta continuó con éxito:

gem install rails --remote --include-dependencies

Attempting remote installation of 'rails'
Successfully installed rails-1.0.0


Probar la instalación de RoR (Windows/Linux)

En primera instancia, debemos tener disponible el comando "rails" desde nuestra consola. Para probarlo, nos posicionamos en un directorio que alojaremos nuestros proyectos web basados en RoR. En el caso de GNU/Linux, lo estándar es usar subdirectorios a partir del “directorio base” llamado /var/www. Si usamos Windows, podremos crear la misma estructura a partir del “directorio base” llamado c:\rails.

Nuestro primer proyecto

Deberemos posicionarlos en el “directorio base” correspondiente a nuestro sistema, ejecutar el comando "rails" y el nombre del proyecto que deseamos crear. La idea es que el framework cree un subdirectorio con el nombre que le ingresamos, y luego él armará toda una serie de subdirectorios y archivos que corresponderán a la estructura inicial para poder comenzar a trabajar en nuestro proyecto RoR:

rails miproyecto


Esto producirá la siguiente salida por pantalla:

create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create lib/tasks
create log
create public/images
[Mensaje resumido]

Entramos en el directorio de nuestra aplicación y ejecutamos un mini servidor web para probar que nuestro entorno RoR esté respondiendo:

cd miproyecto
ruby script/server


El último comando ejecuta el servidor, y la salida en consola es la siguiente:

=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2006-01-23 16:45:54] INFO WEBrick 1.3.1
[2006-01-23 16:45:54] INFO ruby 1.8.4 (2005-12-24) [i386-linux]
[2006-01-23 16:45:54] INFO WEBrick::HTTPServer#start: pid=7627 port=3000


Nuestro servidor atenderá el puerto 3000. Si usamos nuestro navegador y apuntamos a la dirección http://localhost:3000 (localhost representa nuestro "servidor local"), nos deberá responder un mensaje de bienvenida:


Pantalla de bienvenida que nos devuelve el servidor WEBrick, confirmando que todo fue instalado y configurado correctamente.

¡Felicitaciones! ¡El primer paso está dado!

Nuestra primer aplicación útil

Para poder hacer una prueba del nuestro entorno “veloz” de desarrollo, que mejor que hacer “esa” actividad que se repite una y otra vez en nuestros sistemas, y que el framework ya tiene sumamente resuelta: nuestro primer ABM (Altas, Bajas y Modificaciones).

Debemos crear nuestra primera base de datos y nuestra primera tabla. Ejecutaremos nuestro cliente de turno para trabajar con MySQL (existen muchos, pero puedes bajar los oficiales desde http://www.mysql.com/products/tools/), y crearemos la base de datos “miproyecto” y la tabla “cliente” con la siguiente estructura:

CREATE TABLE `miproyecto`.`clientes` (

`id` int(3) NOT NULL auto_increment,

`nombre` varchar(45) default NULL,

`telefono` varchar(45) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Y deberemos definir cual es nuestra configuración de nuestra base de datos editando el siguiente archivo:

En Windows: C:\rails\miproyecto\config\database.yml

En GNU/Linux: /var/www/miproyecto/config/database.yml

Nota: en GNU/Linux la única diferencia con los directorios de Windows es el sentido de la barra (“\” por “/”) y la ausencia de la representación de unidades a través de letras.

A continuación, deberemos modificar el nombre de la base, agregar la clave del usuario y comentar la línea “socket”:

development:

adapter: mysql

database: miproyecto

username: root

password: root

#socket: /path/to/your/mysql.sock

Si queremos ir rápido y seguro, podemos usar los “andamios” (scaffolding)

Scaffold es un veloz generador de CRUD: Create, Retrive, Update y Delete, lo que significaría en castellano: un ABM.

Posicionados en el directorio base de nuestro proyecto ejecutaremos el comando para generar el modelo:

C:\rails>cd miproyecto

C:\rails\miproyecto>ruby script\generate scaffold Cliente

exists app/controllers/

exists app/helpers/

exists app/views/clientes

exists test/functional/

dependency model

exists app/models/

exists test/unit/

exists test/fixtures/

create app/models/cliente.rb

create test/unit/cliente_test.rb

create test/fixtures/clientes.yml

create app/views/clientes/_form.rhtml

[Mensaje resumido]

Nota: si al efectuar los cambios en el código estos no se ven reflejados en el servidor web WEBrick (a pesar de restaurar el navegador), deberás reiniciar el servidor web para ver los cambios.

http://127.0.0.1:3000/clientes

Pantalla principal de nuestro CRUD desarrollada a través de scaffolding

Si presionamos sobre “New Cliente” nos habilitará a crear nuevos clientes.

Luego de ingresar el primero, nos mostrará la lista de los ingresados en el sistema y 3 nuevas operaciones que se aplican sobre nuestro ítem: Show, Edit, Destroy (Mostrar, Editar, Destruir).

Está demás decir que absolutamente toda la información que vemos, y su comportamiento, es alterable a nuestras necesidades.


Opción “New Cliente” nos permite dar nuestra primer Alta


Luego de ingresar nuestro primer cliente, tener acceso a las opciones de modificar o dar de baja



Finalmente, como se vería la página principal de nuestro ABM de Clientes luego de ingresar varios registros


La “cereza de la torta”: puliendo la castellanización

Como forma de entrar rápidamente en otro tema, para traducir a nuestro idioma los textos de nuestra aplicación (que originalmente son generados en inglés) deberemos editar por primera vez nuestras “plantillas” (templates) de código html. Como estamos dentro del patrón MVC estas plantillas se encontrarán ubicadas en la capa que representa la vista (explicado en la introducción al patrón) dentro del directorio de nuestro proyecto y con la extensión .rhtml:

C:\rails\miproyecto\app\views\clientes\edit.rhtml

Aquí podremos modificar todos los textos que están a la derecha de link_to, como por ejemplo:

<%= link_to 'Back', :action => 'list' %>

Cambiando por:

<%= link_to 'Volver', :action => 'list' %>

Si este comportamiento lo queremos hacer permanente, es decir, cada vez que nuestro sistema genere el código del “andamio”, deberemos modificar las plantillas del framework, ubicadas en:

cd [directorio_instalación_ruby]

cd \lib\ruby\gems\1.8\gems\actionpack-1.11.2\lib\action_controller\templates\scaffolds

Conclusión

Los expertos dicen que desarrollar con este framework permite crear una aplicación web en al menos diez veces más rápido que con una herramienta similar en Java. Parte del secreto está en el lenguaje de programación Ruby, en los Patrones de Diseño utilizados y en la filosofía de trabajo que sigue principios de Desarrollo Ágil.


Imagen “publicitaria”, muy provocativa, que compara la sencillez y el poder de RoR vs. J2EE de Java


¿Será el “Santo Grial” que estábamos buscando?

Aún no tengo la respuesta, pero el “lado bueno de la fuerza” está fluctuando hacia Ruby On Rails, y gracias a su popularidad, muchos otros proyectos de frameworks para desarrollo web están tomando fuerza; se puede decir que estamos entrando en la Era (¿o la moda?) de este tipo de estrategias de desarrollo.

Por lo pronto recomiendo empezar a conocerlo y a probarlo en ambientes “cerrados”, como una aplicación para una Intranet, implementar todas las operaciones clásicas de ABM y progresivamente implementar el resto de nuestros requerimientos para ir sumando experiencia en el framework y en este peculiar lenguaje de programación.

Y el tiempo dirá si esto es una moda pasajera o llegó para destronar a PHP, o tal vez, al mismo lenguaje Java con toda su parafernalia.

“EL REY HA MUERTO, ¡VIVA EL REY!”

17 comentarios:

Anónimo dijo...

En lo personal no creo que llegue a destronar a PHP. Por el contrario, y a raiz de la aparición de Rails están surgiendo, o mejorandose un importante numero de frameworks que implementan el mismo paradigma en PHP, entre ellos CakePHP que creo que es uno de los que mejor relación potencia-facilidad ofrece.
Otro punto a considerar es que a pesar de todo hacer una aplicación completa sigue siendo mucho más complejo que los ejemplos de 15 minutos que se presentan en todos lados (tanto en Rails, como en otros frameworks).
Saludos

Anónimo dijo...

Buenas

Yo en mi propio blog publique una serie de post de como montar un servidor casero con Apache2 que soportase Php, JSP RoR y MySQL.

Lo que no acabo de averiguar es como enlazar correctamente RoR con Apache2.

Me explico, JSP utiliza el servidor Tomcat por el puerto 8080, pero lo tengo configurado de tal manera que me envía la respuesta al servidor Apache2 en el puerto 80.

RoR usa su propio servidor, según creo, y conecta por el puerto 3000. Se podría hacer que dirija la salida al Apache2?.

Enrique Place dijo...

Pablo:

> En lo personal no creo que
> llegue a destronar a PHP. Por el

Tampoco estoy seguro si lo va a destronar, pero tampoco estoy seguro si PHP siempre será la herramienta más conveniente... tal vez en un futuro cercano sea Python la alternativa.

También hay otra forma de ver el problema: generalmente el desarrollador es más productivo no solo por las facilidades de la herramienta, sino por la experiencia sobre la misma, y cuan cómodos nos sentimos en ella.

> contrario, y a raiz de la
> aparición de Rails están
> surgiendo, o mejorandose un
> importante numero de frameworks

Si, a eso me refiero en el artículo. Muchos opinan con recelo que RoR no le llega a los pies de PHP ni de Java, pero en el caso del primero mucha gente se empezó a apurar el paso porque se dieron cuenta que se estaban quedando "dormidos", y que el "recién llegado" estaba mejor preparado que lenguajes más maduros.

> entre ellos CakePHP que creo que
> es uno de los que mejor relación
> potencia-facilidad ofrece.

Yo he evaluado muchos, pero por la falta de tiempo, solo superficialmente. Al final, me he decantado por la corriente "oficial", usar el Zend Framework, de la propia empresa que desarrolla PHP.

> Otro punto a considerar es que
> a pesar de todo hacer una
> aplicación completa sigue siendo
> mucho más complejo que los
> ejemplos de 15 minutos que se
> presentan en todos lados (tanto en
> Rails, como en otros frameworks).

Estoy de acuerdo con eso, un desarrollo no se puede evaluar en los primeros 15 minutos, pero el punto es, que haces con PHP solo en ese mismo tiempo (yo lo pierdo yendo y volviendo de la máquina de café ;-)

Enrique Place dijo...

Adrián, a ver si te entiendo: no debería ser al revés lo que intentas hacer, es decir, que a través de Apache que atiende a un solo dominio, diferenciando los puertos que le acceden, redireccionar al servidor correspondiente?

Por ejemplo:

www.dominio.com:80 -> Apache
www.dominio.com:8080 -> JBoss
www.dominio.com:3000 -> RoR

Si es lo contrario, reformulame la pregunta que no te entendí.

Anónimo dijo...

Buenas

Si, lo estaba planteando al reves. Lo que quiero es que si accedo a la direccion http://localhost/php me muestre las paginas de php, si accede a la direccion http://localhost/jsp me muestre las de JSP, y si accedo a la direccion http://localhost/ror me muestre las de Ror.

La parte de JSP ya lo logre, Apache2 me mustra las paginas JSP sin tener que entrar por la direccion http://localhost:8008 que seria la del Tomcat.

Lo que queria saber si se podria hacer eso mismo con Ror, para no tener que entrar por http://localhost:3000

Anónimo dijo...

muy bueno este tutorial, lo he seguido paso a paso y sin ningun problema

ahora nos falta un poco por donde seguir, algun manual decende, la api y demas

muchas gracias

Enrique Place dijo...

> muy bueno este tutorial, lo he
> seguido paso a paso y sin
> ningun problema

Bueno, me alegro mucho ;-) He tenido el cuidado de seguir paso a paso mis pruebas e ir documentándolas, por lo que debería funcionar sin problemas (a eso se le llama "ser metódico" ;-))

> ahora nos falta un poco por donde
> seguir, algun manual decende, la
> api y demas

Estoy viendo de armar otros con la misma metodología. Quiero hacer un mini-sistema de seguimiento de gastos hogareños, y en un futuro, unirlo con la programación para celulares haciendo una aplicación que permita ir cargando los gastos que voy haciendo a un servidor central (lo puedes ver en mi blog personal).

> muchas gracias

De nada, los comentarios y las críticas pulen el contenido de los artículos ;-)

Anónimo dijo...

Buen tutorial aunque hay que explicar con mas ejemplos...

http://www.animegalaxia.com

Enrique Place dijo...

¿O sea, dejas un comentario completamente inútil y vago como excusa para hacer publicidad a tu sitio?

Vergüenza te debería dar.

Anónimo dijo...

Hola Enrique.

Quizás sea muy torpe yo (más de lo que creía) o me falta ser metódico.

Lo cierto es que he seguido el manual al pie de la letra, pero no consigo resultados.

En un principio intenté hacerlo con una pequeña base de datos para control de fincas que yo mismo monté. Luego, tras la desesperación, copié el código de tu ejemplo. Pero en ambos casos me sale el mismo error al intentar generar 'con el andamio' (script/generate scaffold).

El error en cuestión es el siguiente:

error Before updating scaffolding from new DB schema, try
creating a table for your model


Y entre paréntesis el nombre de la tabla pero con la primera letra mayúscula.

He buscado en Google, pero no encuentro nada. Primero pareció ser que pudiera deberse a esa incial en mayúscula, pero después de hacer ALTER TABLE e incluso construirla de nuevo la jodía sigue en minúscula. Luego pudieran ser los pluarales ¿?

Y por último he pensado si es porque la base de datos no trabaja con el motor InnoDB.

Pero vamos, en toda la tarde no lo he conseguido.

Gracias.

Unknown dijo...

Segui todo tu tuto ....hasta despues de hacer este paso

C:\rails\miproyecto>ruby script\generate scaffold Cliente

y despues cargo la pagina http://127.0.0.1:3000/clientes

Me sale esto

Mysql::Error in ClientesController#index

#28000Access denied for user 'root'@'localhost' (using password: NO)

RAILS_ROOT: ./script/../config/..

entre otras cosas!!

que puedo hacer??

Enrique Place dijo...

Estimados, no tendrán problemas con los permisos / configuración de la base de datos?

kike dijo...

Muy buen tutorial
Yo he estado traduciendo el libro Pragmatic Bookshelf - Agile Web Development with Rails- 2ed para practicar RoR pero después de terminar el primer capitulo no logro hacer que mi aplicación (la aplicación que muestra el libro, de la tienda de libros de programadores pragmáticos) muestre las imágenes y colores como en los ejemplos, alguien ¿podría decirme como implementar esto ir armando la vista?
No se que estaba mal, pues tenia bien los vínculos a las imágenes que debe de mostrar

Por lo demás es muy fácil lo de la base de datos y apache
*** Lo probé en el lado oscuro usando InstanRails jeje!! Pero espero checar próximamente en Ubuntu,
Saludos y buen año para todos!
desde México Enrique Reyes^2.

Anónimo dijo...

Pues la verdad es que no lo creo Enrique Place. Creo que estaba todo correcto en cuanto permisos. No obstante, tenía la cosa aparcada por un mero asunto de 'reestructuración de objetivos personales' (cuestiones laborales, a las cuales les puedo aplicar la recién leida frase de tu otro blog 'hacer camino al andar')

En cuanto me vuelva a poner al día (estoy adaptándome a mi nuevo horario laboral) retomo los raíles y ya contaré si sigue igual o si me va bien.

Gracias y saludos.

Anónimo dijo...

Para davida:
la tabla tiene que tener el nombre 'clientes', en plural, y el scaffolding o armazón lo tienes que crear con la palabra 'cliente' (en singular)

Para edgar:
tienes que reiniciar el servidor tras modificar el archivo *.yml; si eso no funciona es que has escrito mal algún dato en ese archivo, probablemente la contraseña de root.

Un saludo a todos.

quiliro dijo...

Reemplazar:
ruby script\generate scaffold Cliente
por:
ruby script\generate scaffold Cliente nombre:string telefono:string

marko dijo...

Saludos, excelente post!

no, no es el santo grial, es la evolución de las herramientas, la especialización de estas al grado de hacerlas casi autonomas, pero no por ello caen en desuso las otras.

es una opinión claro, una herramienta más para nuestro arsenal.