38. Ruby y RoR: instalación y primeros pasos
Instalación de RoR
Ruby on Rails, abreviado como RoR, es un framework basado en Ruby, orientado a la creación de aplicaciones web. Un framework es algo así como una base sobre la que vamos a generar un proyecto web. En muchas ocasiones un framework incorporá utilidades software que nos deberían permitir desarrollar nuestra aplicación web de manera más comoda y rápida.Para instalar Ruby on Rails acudimos al página http://www.railsinstaller.org/en
Pulsamos sobre el botón que tiene escrito "Windows - Ruby 2.3". A continuación se descargará RoR, con los componentes que aparecen debajo del botón que acabamos de pulsar: Ruby, Rails, Bundler, Git, Sqlit, TinyTDS, SQL Server Support y DevKit.
Una vez descargado RoR, lo instalaremos. En el proceso de instalación podemos ver que RoR se instalará en el C:/RailsInstaller.
Cuando haya terminado la instalación nos aparecera lo siguiente:
Como podemos apreciar, se nos está invitando a introduzcamos nuestro nombre y a continuación nuestro email. Dichos pasos forman parte tambien de la instalación y puesta a punto de RoR.
A continuación aparecerá un "prompt" del terminal de Windows en el directorio C:\Sites, así:
Dicho directorio "Sites" es un directorio que se crea durante la instalación de RoR. Este directorio es el que nos propone para guardar nuestros proyectos RoR, pero podemos usar cualquier otro que nos guste más. De momento trabajaremos en este directorio propuesto ("Sites").
Arrancar el servidor web de Rails
Rails viene con un servidor web como Apache. El servidor web que se ha instalado con Rails y responde en el puerto 3000 de la IP nuestro ordenador (localhost o 127.0.0.1). Nota: recuerda que el servidor web Apache responde en el puerto 80. Por defecto el servidor web de Rails, viene apagado, tendremos que arrancarlo si queremos que atienda a peticiones. Para encenderlo (o arrancarlo) escribimos lo siguiente en el terminal:rails server
A continuación aparecerá lo siguiente:
OK! ya tenemos encendido el servidor web de Rails. Ahora vamos a comprobar que está encendido escribiendo en la barra de direcciones de un navegador esto:
localhost:3000
Si parece la siguiente página, es que el servidor web está corriendo ok, y que Rails se ha instalado correctamente en el nuestro ordenador.
Por cierto...¿dónde se encuetra el archivo .html que se esta visualizando? Podemos encontrarlo en el log (registro) del servidor web:
Creación de nuestro primer proyecto RoR
Rails tiene un comando que nos permite generar la base de nuestro proyecto. Es el siguiente:C:\Sites\rails new MiPrimerProyecto
A continuación pulsamos Enter, y veremos que el terminal muestra una serie de lineas que indican que se están generando nuestro primer proyecto Rails, eso sí, vacio o casi... Seremos nosotros los encargados de "llenarlo".
A continuación, ejecutamos el comando "dir" en la linea de comandos. Veremos lo siguiente:
Como se puede apreciar en la imagen, dentro del directorio "Sites", se ha creado un directorio "MiPrimerProyecto". Si ahora ejecutamos "cd MiPrimerProyecto" y a continuación ejecutamos "dir", aparecerá lo siguiente en la linea de comandos:
Como podemos ver dentro del directorio MiPrimerProyecto, tenemos una seríe de directorios que se han creado cuando hemos ejecutado el comando "rails new MiPrimerProyecto". No te asustes, esos directorios son la base de nuestro primer proyecto rails. El contenido de algunos de ellos de momento no nos preocupan para seguir creando nuestro proyecto.
Nuestro siguiente paso es llenar proyecto que de momento estan "en los huesos". Para empezar a llenarlo vamos a escribir lo siguiente en el terminal desde el directorio "MiPrimerProyecto":
rails generate controller Welcome index
El resultado del anterior comando debería de ser algo parecido a esto:
El anterior comando crea un nuevo controlador con un archivo llamado index.html.erb, que podrems encontrar en MiPrimerProyecto\app\views\welcome\index.html.erb.
Ahora vamos al navegador y escribimos lo siguiente:
localhost:3000/welcome/index
Nos debería de aparecer la siguiente página web:
Editar el archivo index.html.erb
Vamos a abrir el archivo index.html.erb con Brackets. Como podemos ver su contenido se corresponde con lo que acaba de aparecer en el navegador web.Vamos a añadir el siguiente código en la parte superior del archivo:
<% a = 4 %>
<%= a %>
Si a continuación volvemos a visitar la URL anterior, veremos que se ha imprimido el número 4.
A continuación vamos a escribir este código:
<%
require 'sqlite3'
# Abrimos el archivo de la base de datos file.db que contiene la base de datos colegio. ¡¡Si el archivo no existe, se va a crear!!
db = SQLite3::Database.new 'colegio.db'
# Recuperamos los alumnos de la tabla "alumnos"
alumnos = db.execute 'SELECT * FROM alumno'
%>
<%= alumnos %>
Comentarios
# esto es un comentario=begin
esto es un
comentario
de varias lineas
=end
Tipos de datos
Números
a = 4a = 0.13
Cadenas de caracteres
a = "hola mundo"a = "hola" + "mundo"
Booleanos
a = trueb = false
Nil
Nil indica ausencia de valor.a = nil
Arrays
a = [1, 12, 38, 11]b = ["hola", "mundo", "de", "nuevo"]
c = ["hola", 1, "mundo", 32]
Añadir un elemento al final del array:
a << 4
Añadir un elemento en una posición determinada:
a[1] = 234 #este código añade un elemento en la segunda posición del array a
La siguiente linea de código devuelve "nil":
a[10]
Operadores aritméticos
Operado suma
a = 2 + 4Operador resta
a = 5 - 3Operador multiplicación
a = 4 * 5Operador división
a = 6 / 2a = 3 / 2 # a tiene como valor 1
a = 3.0 / 2 # a tiene como valor 1.5
Operadores relacionales
Operador >
a > b4 > 8
Operador <
c < 8-1 < 3
Operador >=
a >= 4 * 5Operador <=
a <= 9Operador ==
b == aOperador !=
a != cOperadores lógicos
Operador &&
a && bOperador ||
a || cOperador !
!aEstructuras de control
if
a = 110if a <= 120
puts "La velocidad es la correcta"
end
if a <= 120
puts "La velocidad es la correcta"
else
puts "La velocidad es excesiva"
end
if a <= 110
puts "La velocidad es la correcta"
elseif a <= 120
puts "La velocidad es alta"
else
puts "La velocidad es excesiva"
end
do while
No existe un bucle "do while" propiamente dicho en Ruby. Para sustituirlo podríamos hacer esto:loop do
# codigo del bucle
break if <condicion>
end
while
a = 0while a < 100
puts a
a = a + 3
end
for (o sea, "loop" ;P)
loop doputs "esto muestra todo el tiempo la misma linea hasta que pulses Ctrl+C"
end
----------------------
a = 0
loop do
puts a
a = a + 3
if a > 100
break
endif
end
Controlador Alumno y vistas correspondientes
class AlumnoController < ApplicationController
def nuevo
end
def guardar
#abort(request.GET['nombre'].inspect)
db = SQLite3::Database.new 'db/colegio.db'
db.execute('INSERT INTO alumno (nombre) VALUES (?)', (request.GET['nombre']))
idUltimaFilaInsertada = db.last_insert_row_id
request.GET['actividad_extraescolar'].each do |actividadExtraescolar|
db.execute('
INSERT INTO
alumno_actividad
(alumno_id, actividad_id)
VALUES (?,?)',
idUltimaFilaInsertada, actividadExtraescolar)
end
#redirect_to action: modificar, id: idUltimaFilaInsertada
redirect_to "/alumno/modificar?id=" + idUltimaFilaInsertada.to_s
end
def lista
db = SQLite3::Database.new 'db/colegio.db'
@result = db.execute('SELECT * FROM alumno')
end
def modificar
db = SQLite3::Database.new 'db/colegio.db'
@result = db.execute('SELECT * FROM alumno WHERE id=?', (request.GET['id']))
#recuperamos todas las actividades extraescolares y....
@actividadesExtraescolares = db.execute('SELECT * FROM actividad_extraescolar')
#las actividades extraescolares que realiza cada alumno
actividadesExtraescolaresAlumno = db.execute('SELECT * FROM alumno_actividad WHERE alumno_id = ?', request.GET['id'])
@idsActividadesExtraescolaresAlumno = [];
actividadesExtraescolaresAlumno.each do |actividadExtraescolarAlumno|
@idsActividadesExtraescolaresAlumno.push(actividadExtraescolarAlumno[2])
end
end
def borrar
end
end
Vista lista.html.erb
<% @result.each do |item| %><%= item[1] %>
<% end %>
Vista modificar.html.erb
<form><input value="<%= @result[0][1] %>">
<% @actividadesExtraescolares.each do |actividadExtraescolar| %>
<label><%= actividadExtraescolar[1] %></label>
<input type="checkbox" value="<%= actividadExtraescolar[0] %>"
<% if @idsActividadesExtraescolaresAlumno.include? actividadExtraescolar[0] %>checked<% end %>>
<% end %>
<input type="submit"></form>
Vista nuevo.html.erb
<form action="guardar"><input name="nombre">
<% @actividadesExtraescolares.each do |actividadExtraescolar| %>
<label><%= actividadExtraescolar[1] %></label>
<input name="actividad_extraescolar[]" type="checkbox" value="<%= actividadExtraescolar[0] %>">
<% end %>
<input type="submit">
</form>
Comentarios
Publicar un comentario