Archivo para la categoría Guías

November 17th, 2008 por Jorge Yau

Hay varias formas de publicar tus aplicaciones en un ambiente de producción, esto se te puede complicar si vienes de un ambiente de PHP y Apache, estas acostumbrado a solo crear un Virtual Host apuntando a un directorio donde tienes todos los archivos de la aplicación.

Con Ruby on Rails la cosa es un poco más complicada, existes diversas opciones para remplazar Apache como tu servidor web, mi recomendación es usar Nginx+mongrel, el cual es un servidor que usa una décima parte de los recursos que normalmente Apache utiliza, el proceso es más complicado y requiere de un nivel mas alto de conocimiento sobre el funcionamiento de servidores, recursos, etc.

A continuación, la forma más rápida y sencilla de publicar una aplicación en un ambiente de producción.

Necesitas contar con Apache2, si no lo tienes instalado solo escribe lo siguiente en tu línea de comando:

$ sudo apt-get install apache2 apache2.2-common apache2-mpm-prefork apache2-prefork-dev apache2-utils libexpat1 ssl-cert libapr1 libaprutil1 libmagic1 libpcre3 libpq5 openssl

Luego de tener Apache2 procede a installar Passenger con el siguiente comando:

$ sudo gem install passenger
$ passenger-install-apache2-module

Luego solo es cosa de configurar un nuevo Virtual Host en la configuración de tu Apache, ya sea en httpd.conf o como un sitio en /etc/apache2/sites-enabled/, de la misma forma en la que configuras un sitio normal.

<VirtualHost *:80>
    ServerName www.tudominio.com
    DocumentRoot /var/www/tuaplicacion/public
</VirtualHost>

Una vez configurado, reinicia tu Apache, y podrás ver tu aplicación en www.tudominio.com

Si requieres más información, visita el sitio de Passenger y lee la documentación

  • Share/Bookmark
November 17th, 2008 por CaDs

Buscando sitios para hostear mis aplicaciones me he dado cuenta de que en algunos sitios ofrecen una imagen de Ubuntu para administrar como deseemos y en el caso de querer que nos dejen pre-instalado ruby y rails cobran un dinero adicional.
Curiosamente instalar Ruby y Rails en una Instalación de Ubuntu en blanco es relativamente sencillo así que les vamos a ahorrar algunos dólares.

1. Instalamos Ruby:

sudo apt-get install ruby-full build-essential

2.Instalamos Ruby Gems:

wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
tar xzvf rubygems-1.2.0.tgz
cd rubygems-1.2.0
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system

3. Teniendo Gems Instalado podemos usarlas para Instalar Rails…

sudo gem install rails

4. … y Mongrel:

sudo gem install mongrel

Listo, ya tenéis la base para correr vuestras aplicaciones RoR en una nueva Instalación de Ubuntu :)

  • Share/Bookmark
October 23rd, 2008 por CaDs

Cuando hice la migración de PC a Mac, en ocasiones echaba de menos la opción de imprimir pantalla (prt scr). Si bien hay varios programas que se encargan de realizar esta función, Leopard (y de hecho esta función está disponible desde OS X v10.2) viene con una utilidad integrada para tomar capturas de pantalla de diversas maneras.

  • Command-shift-3: Toma una captura de todo el escritorio, igual que la función print screen de windows y guarda el archivo en el Desktop.
  • Command-shift-4: Convierte el cursor en una cruz y nos permite seleccionar el área que deseamos capturar. Al igual que antes, guarda este archivo en el Desktop.
  • Command-shift-4 + space: Para entrar en este modo usad la combinación de antes (Command-shift-4) y cuando el cursor se haya convertido en una cruz, pulsad espacio. El cursor se convertirá en una cámara y nos permitirá realizar una captura completa de la ventana sobre la que coloquemos la cámara.
    Este último modo es particularmente útil para aquellos que trabajen con varias ventanas abiertas en su desktop y sólo quiera capturar una de ellas.
  • Share/Bookmark
October 21st, 2008 por CaDs

Cómo poner a dormir tu macbook es una cuestión de gustos.
En lo personal no me gusta apagar mi computadora, generalmente trabajo con varios programas abiertos a la vez y tener que abrirlos todos cada vez que arranco me da pereza.
Por otro lado, no me gusta el sistema de SafeSleep que viene por defecto en las “nuevas” mac (creo que introdujeron este feature como en otoño de 2005), ya que deja una molesta luz parpadeando y aunque sea poco, sigue consumiendo energía.
Así que aquí os dejo un pequeño comando para cambiar la manera de dormir vuestra macbook.

Para ver el modo en el que hiberna vuestra macbook podéis usar este comando:

$ pmset -g | grep hibernatemode

Si nunca habéis tocado esto generalmente la respuesta debiera ser
hibernatemode 3
Ese es el modo por defecto que traen generalmente las macbooks.
Pero podemos elegir entre diversos modos:

  • 0: Mantiene la RAM activa mientras la computadora duerme, desactiva SafeSleep y se “despierta” en el momento.
  • 1: Sleep mode. Escribe el contenido de la RAM en el disco. El sistema se apaga completamente mientras duerme. Tarda más en despertarse ya que debe copiar el contenido de la RAM desde el disco duro.
  • 3: Safe Sleep. Al igual que el modo 1 copia los contenidos de la RAM al disco, pero mantiene la RAM activa. En el caso de que el sistema se quede sin energía entra en modo hibernación total.
  • 5: Igual que el caso 1, pero sirve para los casos en los que se esté usando Secure Virtual Memory.
  • 7: Igual que el caso 3, pero sirve para los casos en los que se esté usando Secure Virtual Memory.

Elegir un modo u otro depende del uso que les déis a vuestras computadoras.
Para cambiar de modo basta con introducir el comando

sudo pmset -a hibernatemode X

Siendo X el modo deseado. (0,1,3,5 o 7)

  • Share/Bookmark
October 18th, 2008 por Jorge Yau

Hace un par de días decidí añadirle la opción de poder publicar anotaciones vía e-mail a una de las aplicaciones en las que estoy trabajando, una opción es tener un proceso automatizado que revise una cuenta de correo cada cierta cantidad de tiempo y luego procesar cualquier correo entrante, la desventaja de esto, es que le estas añadiendo procesos innecesarios a tu servidor, ya que para que funcione en tiempo real, debes revisar la cuenta en un corto intervalo de tiempo, el cual utiliza recursos de tu servidor haya o no mensajes nuevos, hay otras formas, mas complejas que requieren mucha configuración y acceso directo a un servidor SMTP, pero esto no es lo que estaba buscando, lo que necesitaba era una forma rápida y sencilla de procesar correos entrantes de múltiples direcciones de correo, sin sobrecargar mi servidor.

Decidí buscar una alternativa hospedada fuera de mi servidor y que fuera fácil de utilizar sin un alto costo, encontré dos opciones Mailhook.org ($14/año) y smtp2web (gratis), el concepto de ambos, es que se encargan de recibir tu correo, y al recibirlo es reenviado a tu aplicación en forma de POST, este POST incluye todo el mensaje incluyendo ‘headers’ y archivos adjuntos, para ser procesados en tu aplicación de la forma que te plazca. De esta forma tu servidor solo entra en acción cuando un e-mail es recibido.

La decisión no fue muy difícil viendo que ambos servicios son similares, decidí darle una oportunidad a la versión gratuita (smtp2web), además de ser gratuita, el código de la misma aplicación está disponible como código libre. A continuación una breve guia de como utilizar este servicio.

El proceso es sencillo, solo necesitas una cuenta de Google para utilizar el servicio.

Tienes dos opciones, utilizar tu propio dominio o una sola cuenta con el dominio @smtp2web.com, para recibir e-mails con tu propio correo necesitas tener acceso a los ‘MX records’ de tu dominio. 

Para configurar tu dominio en smtp2web, haz click en ‘Add domain mapping’, donde te pedirán el nombre de tu dominio y la dirección en donde vas a recibir el post, el dominio de la dirección de POST debe coincidir con la dirección que utilizas para recibir dominios, por lo tanto debe ser algo como ‘http://post.tudominio.com/emailposting’.

Nota: Todo correo entrante a tudominio.com sera dirigido a smtp2web, si deseas seguir recibiendo correo normal con ese dominio, te recomiendo que utilices un subdominio algo como post.tudominio.com

Luego sigue los pasos para confirmar que el dominio que estas utilizando te pertenece, solo debes subir a tu servidor un archivo vacío con el nombre que smtp2web te va a proporcionar.

El siguiente paso es añadir lo siguiente a tus DNS records:

post.tudominio.com. MX 5 mx1.smtp2web.com.
post.tudominio.com. MX 5 mx2.smtp2web.com.

Si seguiste todos estos pasos correctamente, ya tu aplicación es capaz de recibir e-mails, cualquier e-mail enviado a usuario@post.tudominio.com será automáticamente enviado como un POST a la dirección http://post.tudominio.com/emailposting.

Aún no hemos terminado, tu aplicación necesita entender ese POST.

En PHP es sencillo, solo utiliza el siguiente código.

<?php
$from = htmlentities($_GET['from']);
$to = htmlentities($_GET['to']);
$body = $_POST['body']
/* tu código, insertar a la BD, etc. */
?>

En Ruby on Rails es un poco mas complicado, RoR por motivos de seguridad no permite hacer POST desde otro servidor/aplicación, así que debes añadir lo siguiente al inicio de tu ‘controller’ para pasar por alto esta medida de seguridad en un ‘action’, en este caso, ‘emailposting’.

protect_from_forgery :except => :emailposting

Para analizar esta data correctamente, te recomiendo que utilices una librería llamada TMail, con esta puedes sacar cualquier tipo de información del e-mail, incluyendo cualquier archivo adjunto que tenga.

$ gem install tmail

Luego debes crear un ‘action’ en tu ‘controller’

def emailposting
  mail = TMail::Mail.parse(request.raw_post.to_s)
  from = mail.from.to_s
  to = mail.to.to_s
  subject = mail.subject.to_s
  body = mail.body.to_s
  # tu código, insertar a la BD, etc.
end

El resto, es responsabilidad tuya, espero les haya gustado esta primera guía para Tequilog.

  • Share/Bookmark