¡Hola mundo! (Hola Ruby, RVM, Homebrew)
Me he decidido a aprender algo de Ruby, y lo primero que deseo hacer es un «Hola mundo» como es usual. En realidad es la excusa perfecta para revisar si tengo todo lo necesario para desarrollar un pequeño formulario que guarde en base de datos, de paso espero aprender alguna base de datos nosql.
Lo primero que encontré es que tengo Ruby desactualizado, al usar el comando
ruby -v
Recibiendo como respuesta:
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
Entiendo que necesito hacer una actualización, para lo cual (estuve leyendo) necesito instalar RVM (Ruby Version Manager). No tengo esto instalado, así que ¡a la carga!
Instalar Homebrew
Para instalar RVM me pide tener instalado Homebrew. Como adivinarán, no lo tengo instalado, y lo que es peor, cuando traté de hacerlo aparecieron varios errores. Luego de una búsqueda encontré lo que tenía que hacer, en la línea de comandos le puse el siguiente código. Esto instalará las «command line developer tools» de X-code. Una vez completado el proceso, lo siguiente es eliminar las versiones anteriores y finalmente realizará la instalación de Homebrew:
xcode-select --install
rm -rf /usr/local/Cellar /usr/local/.git
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
Al hacerlo el sistema me dio la siguiente respuesta:
Whoops, the Homebrew installer has moved! Please instead run:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Also, please ask wherever you got this link from to update it to the above.
Thanks!
Así que ahora si, ejecuté ese comando y tuve la siguiente respuesta:
Also, please ask wherever you got this link from to update it to the above.
Thanks!
iMac-de-sergio:checklist ser$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/man/man1/brew.1
Press RETURN to continue or any other key to abort
En mi caso fue necesario aplicar un «fix» previo para los permisos de homebrew, ejecutando los siguientes comandos:
sudo chown -R "$USER":admin /usr/local
sudo chown -R $USER:admin /Library/Caches/Homebrew
Finalmente nengo Homebrew instalado!
==> Downloading and installing Homebrew...
remote: Counting objects: 3659, done.
remote: Compressing objects: 100% (3494/3494), done.
remote: Total 3659 (delta 35), reused 698 (delta 24), pack-reused 0
Receiving objects: 100% (3659/3659), 2.96 MiB | 944.00 KiB/s, done.
Resolving deltas: 100% (35/35), done.
From https://github.com/Homebrew/homebrew
* [new branch] master -> origin/master
HEAD is now at 32e46b0 freeimage: add 3.17.0 bottle.
==> Installation successful!
==> Next steps
Run `brew help` to get started
Para validarlo, podemos consultar la versión:
brew -v
¿cómo usarlo? aquí un ejemplo sencillo instalando wget para mac:
brew install wget
Actualizar GIT
Una de las cosas pendientes fue actualizar GIT esto lo realicé de manera sencilla (fue una de las cosas más sencillas de hacer) con el comando:
brew install git
Ahora finalmente:
git --version
git version 2.4.5
Instalar RVM
Ahora a instalar RVM, y esto fue relativamente fácil con el comando:
\curl -sSL https://get.rvm.io | bash -s stable --ruby
Listo, al parecer está instalado:
Creating alias default for ruby-2.2.1...
* To start using RVM you need to run `source /Users/ser/.rvm/scripts/rvm`
in all your open shell windows, in rare cases you need to reopen all shell windows.
Validamos la versión:
rvm -v
rvm 1.26.11 (latest) by Wayne E. Seguin , Michal Papis [https://rvm.io/]
Actualizando Ruby
He usado el siguiente comando para realizar la actualización de ruby mediante rbenv
brew install rbenv ruby-build
Con lo que tenemos:
ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
Para finalmente ejecutar estos comandos:
# Install Ruby
rbenv install 2.2.2
rbenv global 2.2.2
ruby -v
Ahora se ha instalado Ruby versión 2.2.2
Installing ruby-2.2.2...
Installed ruby-2.2.2 to /Users/ser/.rbenv/versions/2.2.2
ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
Instalar Rails
Rails es una framework para Ruby, así que a eso vamos:
gem install rails -v 4.2.1
Con esto (si no aparecieron errores) Rails está instalado, pero para usar el ejecutable de Rails, debemos usar:
rbenv rehash
Y validamos la instalación:
rails -v
Rails 4.2.1
Y así es como luego de 2 horas, estoy listo para el «hello World». … creo.
Hola mundo
Estuve buscando una la forma de hacer esto de manera sencilla. Algo como «echo ‘hola mundo'» y listo. Pero parece que finalmente tendré que hacerlo bajo MVC (cosa que he odiado por siglos), no me malentiendan, no soy hardcoder, soy apenas newbie en la programación y siempre me ha resultado más cómoda la programación estructurada que el MVC. En fin, aquí vamos.
Encontré un lindo tutorial en Arubystory.com así que esto fue super sencillo y solo transcribiré.
¿Qué necesitamos?
- Terminal
- Editor de texto
- Navegador
Creamos un folder donde pondremos el proyecto del tutorial y navegaremos hacia el en la línea de comandos:
mkdir tutorials
cd tutorials
Ahora, creamos una nueva aplicación con el nombre hello_world:
rails new hello_world
El comando anterior creará una carpeta con el nombre «hello world».
Dentro de esta carpeta encontraremos varios archivos y subcarpetas que constituyen la aplicación actual.
Revisaremos solo los archivos que van a producir cambios para nuestro fin.
Tenemos un servidor web instalado en nuestro sistema, forma parte de la instalación de Ruby y su nombre es WEBRick. Iniciemos el servidor para ver loq ue hemos creado.
En la línea de comandos, navegamos a la carpeta creada: «hello_world»
cd hello_world
Iniciamos WEBrick con el siguiente comando:
rails server
También se puede usar «s» en lugar de «server» en el comando anterior, este es un aias que hace la misma cosa:
rails s
Debemos ver algo como esto:
Por defecto, el servidor escucha el puerto 3000, pero podemos cambiar esto al puerto que deseamos usando la opción -p:
rails server -p 8080
Ahora, el servidor está levantado y nuestra aplicación está desplegada. Abrimos el browser y apuntamos hacia:
http://localhost:3000
Debemos ver algo como esto:
Antes de continuar, trataré de explicar de una manera simple cómo funciona una aplicación Rails.
Cada solicitud a la aplicación es servida por métodos (llamados acciones) los que son definidos en archivos especiales llamados controladores (controllers).
Estas acciones ejecutan lo que necesita ser ejecutado y define cuál será la respuesta (por ejemplo una página html, un objeto JSON, etc). Las respuestas (ejm: una página) son definidas en archivos especiales llamados Vistas (views) pero hay casos (como cuando responden con un objeto JSON) donde la acción vista no requiere ser definida.
Las reglas (routes) que definen qué acción de qué controlador servirá cada solicitud están ubicadas en un archivo especial llamado routes.rb
Esto es suficiente para empezar. Vamos a crear nuestro primer controlador llamado «pages».
rails generate controller pages
Veremos varias líneas apareciendo en el terminal, pero nos enfocaremos en la primera:
Si, pages_controller.rb es nuestro controlador. En este archivo vamos a crear nuestra acción que servirá como «root» (home) para las solicitudes a nuestra aplicación.
Entonces, abrimos este archivo con nuestro editor de texto. Su ubicación es:
app/controllers/pages_controller.rb
Como podemos ver, el controlador está vacío. Agregaremos una acción y la llamaremos «home»:
def home
end
Como puedes ver, nuestra acción no hace nada ya que todo lo que queremos hacer es mostrar una página estática con el texto «Hello world». Agreguemos Vamos a añadir algo, aunque sólo para ver que está siendo ejecutado desde el log del servidor:
class PagesController < ApplicationController
def home
puts "Honey, I'm home!"
end
end
Si no le decimos lo contrario (como nuestro caso), la acción home intentará responder con una vista llamada también «home». Entonces, creamos esta vista en el folder correspondiente:
app/views/pages/
Creamos un archivo ene sta ubicación con el nombre home.html.erb La extensión erb implica que este archivo será procesado por Rails para generar un contenido dinámico.
Editamos este archivo y agregamos:
<h1>Hello world!</h1>
¿Qué falta? Sí, debemos ‘rutear’ las solicitudes hacia nuestra acción del controlador. Abrimos con nuestro editor de texto el archivo routes.rb que está ubicado aquí:
config/routes.rb
Ahí encontraremos bastante texto comentado que podemos eliminar.
Ahora, agregamos la siguiente línea que dirá que el path del root «/» será servido por nuestra acción del controlador home:
root to: 'pages#home'
Si refrescamos el navegador, podremos ver la asombrosa y super compleja página que hemos creado:
Podemos parar aquí, pero sería bonito si hacemos que el texto «Hello world!» sea pasado a la vista desde la acción del controlador, si? SI.
Abrimos el controlador pages otra vez y modificaremos la acción home:
def home
@greeting = "Home action says: Hello world!"
end
Aquí, declaramos una variable de instancia a nuestro controlador con el nombre greeting y el valor «Home action says: Hello world!.»
Esta variable está disponible para usar desde nuestra vista correspondiente asíq ue abrimos la vista home.html.erb y cambiamos su contenido por el siguiente:
<h1>< %= @greeting %></h1>
Refrescamos la página en el navegador y aquí está:
Hemos creado nuestra primera aplicación con Ruby on Rails.
ser humano
Music & Design & Photo & Bike.
Test, fail, learn, repeat.