Está en la página 1de 6

TALLER RUBY ON RAILS [tinestri@cadit ror]$ rails recetario [tinestri@cadit ror]$ cd recetario [tinestri@cadit recetario]$ ruby script/server

-p 3000 [tinestri@cadit recetario]$ ruby script/server -p 3000 ./script/../config/boot.rb:28:Warning: require_gem is obsolete. Use gem instead. => Booting WEBrick... => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2008-04-16 14:51:16] INFO WEBrick 1.3.1 [2008-04-16 14:51:16] INFO ruby 1.8.5 (2007-09-24) [i386-linux] [2008-04-16 14:51:16] INFO WEBrick::HTTPServer#start: pid=24938 port=3000 Probar: cadit.anahuac.mx:3000/

Abrir una segunda ventana e ir a “recetario”. Vamos a hacer un pequeño ejemplo [tinestri@cadit ror]$ cd recetario Vamos a crear un archivo llamado mi_prueba_controller.rb, el cuan contendrá el esquelto de MiPruebaController. [tinestri@cadit recetario]$ ruby script/generate controller Imprueba Este archivo está en: recetario/app/controllers [tinestri@cadit recetario]$ ls app config db lib public README test vendor components database.yml doc log Rakefile script tmp [tinestri@cadit recetario]$ cd app [tinestri@cadit app]$ cd controllers [tinestri@cadit controllers]$ ls application.rb mi_prueba_controller.rb~ receta_controller.rb~ mi_prueba_controller.rb receta_controller.rb Si abrimos el archivo vemos que no tiene nada [tinestri@cadit controllers]$ jed mi_prueba_controller.rb

sql En este archivo vamos a crear la tabla “recetas”.anahuac. instrucciones TEXT. Aparece como si Rails hubiera tratado sin éxito de localizar una acción llamada index.anahuac. el método dilber class MiPruebaController < ApplicationController def inde render_text "Hola amigos de Ruby On Rails" end def dilbert render_text "Que facil" end end Ahora probamos con : cadit.mx:3000/mi_prueba Unknown action mi_prueba se mapea al controlador recién creado.mx:3000/mi_prueba/Dilbert CREACION DE BASES DE DATOS DEL LIBRO DE RECETAS Ir a: [tinestri@cadit recetario]$ ls app config db lib public README test vendor components database. .yml doc log Rakefile script tmp [tinestri@cadit recetario]$ cd db [tinestri@cadit db]$ jed recetas. actualizado TIMESTAMP. escribimos: CREATE TABLE recetas(id smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT.rb class MiPruebaController < ApplicationController def index render_text "Hola amigos de Ruby On Rails" end end Ahora tratamos otra vez: cadit.mx:3000/mi_prueba Podemos poner otra acción al controlador. titulo VARCHAR(50). creado TIMESTAMP NOT NULL.Si probamos: cadit.anahuac. por ejemplo. Por lo tanto. vamos a añadir el método index a la clase Controlador: en el archivo mi_prueba_controller.

test: adapter: mysql database: recetario_test username: tinestri password: socket: /var/lib/mysql/mysql.mysql. # http://rubyforge.sql . Versions 4. Install mysql.PRIMARY KEY (id)).sock host: localhost El siguiente comando sirve para jalar el archivo a la base de datos [tinestri@cadit db]$ mysql recetario_development <recetas.yml MySQL (default setup).org/projects/rubyforapache # # And be sure to use new-style password hashing: # http://dev. En config buscamos database.0 are recommended.html development: adapter: mysql database: recetario_development username: tinestri password: socket: /var/lib/mysql/mysql. # Do not set this db to the same as development or production.com/doc/refman/5.yml para configurar la conexión a la base de datos y: [tinestri@cadit config]$ jed database.--include=/usr/local/lib # On Windows: # There is no gem for Windows.so from RubyForApache.sock host: localhost # Warning: The database defined as 'test' will be erased and # re-generated from your development database when you run 'rake'.sock host: localhost production: adapter: mysql database: recetario_production username: tinestri password: socket: /var/lib/mysql/mysql. # # Install the MySQL driver: # gem install mysql # On MacOS X: # gem install mysql -.0/en/old-client.1 and 5.

/config/boot.00 sec) Desde recetario [tinestri@cadit recetario]$ ruby scritp/generate model Receta En recetario/app/models se creó receta. Type '\c' to clear the buffer.27 Type 'help. Rails dota dinámicamente a la clase Receta de métodos para seleccionar las filas de la tabla recetas y además prepara un atributo para cada columna de la tabla. se mapea a una tabla de la base de datos en plural (recetas). El siguiente paso consiste en crear un controlador para las recetas con acciones para manipular las recetas de la base de datos.rb create app/helpers/receta_helper.rb create test/functional/receta_controller_test. si lo abrimos: . Your MySQL connection id is 6219 to server version: 5. Se tiene una conexión dinámica entre: la clase Receta y la tabla recetas. Aquí se encuentra el objeto de negocio de la receta que Rails “MAPEA” sobre la tabla “recetas” de la base de datos.rb que contiene el esqueleto de definición de la clase RecetaController y se encuentra en app/controllers. or \g.rb:28:Warning: require_gem is obsolete. Un modelo singular de nombre de clase Receta.rb y si lo abrimos: class Receta < ActiveRecord::Base end ActiveRecord es una biblioteca que hereda objetos y propiedades. Empty set (0. Commands end with .rb Se creó un archivo receta_controller. Use gem instead.0.Para probar [tinestri@cadit db]$ mysql recetario_development Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. [tinestri@cadit recetario]$ ruby script/generate controller Receta ..' or '\h' for help. mysql> select * from recetas./script/. exists app/controllers/ exists app/helpers/ create app/views/receta exists test/functional/ create app/controllers/receta_controller.

mx:3000/receta/new CREACIÓN DE ACCIONES Y VISTAS <html> <head> <title>Todas las recetas</title> </head> <body> <h1>Libro de recetas . edit y delete.rb class RecetaController < ApplicationController scaffold :receta end scaffold :receta define acciones para todas las operaciones en la base de datos. :id => receta.find_all end .each do |receta| %> <tr> <td><%= link_to receta.[tinestri@cadit controllers]$ jed receta_controller. estas acciones son list. :action => "show".Todas las Recetas</h1> <table border="1"> <tr> <td width="80%"><p align="center"><i><b>Receta</b></i></td> <td width="20%"><p align="center"><i><b>Fecha</b></i></td> </tr> <% @recetas.id %></td> <td><%= receta.titulo.anahuac. :action => "new" %></p> </body> </html> class RecetaController < ApplicationController scaffold :receta def list @recetas = Receta.fecha %></td> </tr> <% end %> </table> <p><%= link_to "Crear nueva receta". Probemos: cadit. show.

end .