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 = 4
a = 0.13

Cadenas de caracteres

a = "hola mundo"
a = "hola" + "mundo"

Booleanos

a = true
b = 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 + 4

Operador resta

a = 5 - 3

Operador multiplicación

a = 4 * 5

Operador división

a = 6 / 2 
a = 3 / 2 # a tiene como valor 1
a = 3.0 / 2 # a tiene como valor 1.5

Operadores relacionales

Operador >

a > b
4 > 8

Operador <

c < 8
-1 < 3

Operador >=

a >= 4 * 5

Operador <=

a <= 9 

Operador ==

b == a

Operador !=

a != c

Operadores lógicos

Operador &&

a && b

Operador ||

a || c

Operador !

!a
 

Estructuras de control

if

a = 110

if 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 = 0
while a < 100
  puts a
  a = a + 3
end 

for (o sea, "loop" ;P)

loop do
   puts "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

Entradas populares de este blog

5. CSS: formatear un documento HTML

34. Java: final, static, constantes, colecciones

29. Android: tipos de layouts