Para comenzar, vamos a mostrar algo de texto en la pantalla rápidamente. Para hacer ésto, necesitas tener tu servidor de aplicación Rails corriendo.
4.1. Iniciando el Servidor Web
En realidad ya tienes una aplicación Rails funcional, Para verla, necesitas iniciar un servidor web en tu máquina de desarrollo. Puedes hacerlo ejecutando:
$ rails server
Truco Compilar CoffeeScript a JavaScript requiere de herramientas adicionales. Si no
dispones de ellas, verás un error de tipo execjs
. Normalmente Mac OS X y
Windows ya incluyen estas utilidades. Rails agrega la gema therubyracer
al
Gemfile
en una línea comentada para nuevas aplicaciones y puedes
descomentarla si la necesitas.
therubyrhino
es el runtime de JavaScript recomendado para usuarios de
JRuby y es añadido por defecto al Gemfile
en aplicaciones generadas bajo
JRuby. Puedes investigar acerca de todos los runtimes soportados en
ExecJS.
Esto lanzará WEBrick, un servidor web incorporado en Ruby por defecto. Para ver tu aplicación en acción, abre tu navegador preferido y accede a http://localhost:3000. Deberías ver la página de información por defecto de Rails.
Truco Para detener el servidor web, presiona Ctrl+C
en la ventana de la línea
de comandos donde se está ejecutando. En modo de desarrollo, Rails generalmente
no requiere reiniciar el servidor web; los cambios realizados serán tomados
automáticamente por el servidor.
La página "Welcome Aboard" es la primera prueba para una nueva aplicación Rails: Ésta asegura que tienes el software configurado correctamente para servir una página. También puedes hacer click en el link About your application's enviroment para ver un resumen del entorno de tu aplicación.
4.2. Hola Mundo
Para conseguir que Rails diga "Hola", necesitas crear como mínimo un controlador y una vista.
El propósito de un controlador es recibir las peticiones (requests) de la aplicación. El enrutamiento (routing) decide qué controlador recibe qué petición.
A menudo, hay más de una ruta para cada controlador, y diferentes rutas pueden ser servidas por diferentes acciones (actions). El propósito de cada acción es obtener información para pasarla después a la vista.
El propósito de una vista es mostrar la información en un formato legible para los humanos. Una distinción importante que hacer es que es el controlador, y no la vista, donde la información es recolectada. La vista sólo debería mostrar la información. Por defecto, las plantillas de las vistas están escritas en un lenguaje llamado ERB (del inglés, Embedded Ruby), que se procesa automáticamente para cada petición servida por Rails.
Para crear un nuevo controlador, necesitas ejecutar el generador de
controladores y decirle que quieres un controlador llamado por ejemplo
welcome
con una acción llamada index
. Para ello, ejecuta lo siguiente:
$ rails generate controller welcome index
Rails creará una serie de archivos y añadirá una ruta por ti.
create app/controllers/welcome_controller.rb
route get "welcome/index"
invoke erb
create app/views/welcome
create app/views/welcome/index.html.erb
invoke test_unit
create test/functional/welcome_controller_test.rb
invoke helper
create app/helpers/welcome_helper.rb
invoke test_unit
create test/unit/helpers/welcome_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/welcome.js.coffee
invoke scss
create app/assets/stylesheets/welcome.css.scss
Los archivos más importantes de éstos son por supuesto el controlador,
que se encuentra en app/controllers/welcome_controller.rb
y la vista,
que se encuentra en app/views/welcome/index.html.erb
.
Abre el archivo app/views/welcome/index.html.erb
en tu editor de texto
y edítalo para que contenga sólo está línea de código:
<h1>Hello, Rails!</h1>
4.3. Estableciendo la página principal
Ahora que hemos hecho el controlador y la vista, necesitamos decirle a
Rails cuándo queremos que se muestre Hello Rails
. En nuestro caso, deseamos
mostrarlo al acceder a la portada de nuestro sitio, http://localhost:3000.
Por el momento, sin embargo, la página "Welcome Aboard" está ocupando ese
lugar.
Para arreglarlo, borra el archivo index.html
ubicado dentro de la carpeta
public
de la aplicación.
Necesitas hacer ésto debido a que Rails servirá preferentemente cualquier
archivo estático en la carpeta public
que coincida con una ruta de la
aplicación.
El archivo index.html
es especial, ya que se sirve si llega una petición a
la ruta raíz de la aplicación (en http://localhost:3000
). Si haces otra
petición (por ejemplo http://localhost:3000/welcome
), se serviría el archivo
estático public/welcome.html
, pero sólo si existiera.
A continuación, tienes que indicarle a Rails donde está ubicada tu página
principal. Para ello, abre el archivo config/routes
en tu editor:
Blog::Application.routes.draw do
get "welcome/index"
# The priority is based upon order of creation:
# first created -> highest priority.
# ...
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
# root :to => "welcome#index"
Éste es el archivo de enrutamiento de tu aplicación, que mantiene entradas con un DSL especial (domain-specific language) que le dicen a Rails cómo conectar peticiones entrantes a controladores y acciones.
Este archivo contiene muchas rutas de ejemplo en líneas comentadas, y una de
ellas en realidad muestra como conectar la raíz de tu sitio a un controlador
y acción específicos. Encuentra la línea iniciando con root :to
y
descoméntala. Debería verse como lo siguiente:
root :to => "welcome#index"
El root :to => "welcome#index"
le indica a Rails que debe asociar las
peticiones de la raíz de la aplicación a la acción index
del controlador
welcome
y get "welcome/index"
le indica a Rails que asocie peticiones de
http://localhost:3000/welcome/index a la acción index
del controlador
welcome
. Este fue creado al inicio cuando ejecutaste el generador del
controlador (rails generate controller welcome index
).
Si accedes a la dirección http://localhost:3000 en tu navegador, verás el
mensaje Hello, Rails!
que colocaste dentro de la vista
app/views/welcome/index.html.erb
, indicando que esta nueva ruta está en
realidad pasando a la acción index
del controlador Welcome
y está
renderizando la vista correctamente.