View posts for » Category "rubyonrails"

Como enviar correos con Rails

Uno de las mejores cosas que tiene Ruby on Rails, es su soporte para enviar correos, el manejo muy simple de plantillas y la forma de conectarlo con el servidor.

En mi caso yo no soy SysAdmin, soy desarrollador o al menos lo intento, y en mi caso… Logre configurar en mi VPS, un servidor con Apache, Mysql, Mongrel, Rails, Ruby, Rubygems, etc etc. Pero cuando quise configurar un servidor smtp para solo enviar correos, me tope con una muy poco documentada y engorrosa forma de echar a andar un servidor smtp.

¿Como envío correos sin tener que instalar un smtp server en el vps?

Leyendo y leyendo, encontré una excelente forma de hacerlo ocupando el smtp de google y como la mayoría usamos google apps for your domain es bastante simple.

Vamos por el código!

Copia esto en tu carpeta lib de tu aplicación con el nombre de smtp_tls.rb


require 'openssl'
require 'net/smtp'

Net::SMTP.class_eval do
private
def do_start(helodomain, user, secret, authtype)
raise IOError, 'SMTP session already started' if @started
check_auth_args user, secret, authtype if user or secret

sock = timeout(@open_timeout) { TCPSocket.open(@address, @port) }
@socket = Net::InternetMessageIO.new(sock)
@socket.read_timeout = 60 #@read_timeout

check_response(critical { recv_response() })
do_helo(helodomain)

raise 'openssl library not installed' unless defined?(OpenSSL)
starttls
ssl = OpenSSL::SSL::SSLSocket.new(sock)
ssl.sync_close = true
ssl.connect
@socket = Net::InternetMessageIO.new(ssl)
@socket.read_timeout = 60 #@read_timeout
do_helo(helodomain)

authenticate user, secret, authtype if user
@started = true
ensure
unless @started
# authentication failed, cancel connection.
@socket.close if not @started and @socket and not @socket.closed?
@socket = nil
end
end

def do_helo(helodomain)
begin
if @esmtp
ehlo helodomain
else
helo helodomain
end
rescue Net::ProtocolError
if @esmtp
@esmtp = false
@error_occured = false
retry
end
raise
end
end

def starttls
getok('STARTTLS')
end

def quit
begin
getok('QUIT')
rescue EOFError
end
end
end

Luego en tu config/enviromment.rb

Copia en la cabecera:

require 'lib/smtp_tls'

y en la parte baja


# Include your application configuration below

ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "tudominio.com",
:authentication => :plain,
:user_name => "tusuarioengafyd",
:password => "ñamñamtuclave"
}

Ahora tienes toda la configuración necesaria para enviar correos!

Pero falta algo mas, implementarlo y echar a correr la magina de ActionMailer.
(En este punto todo es mas fácil y existe mucha documentación al respecto, de hecho la totalidad de los libros sobre Rails refieren capítulos enteros a este punto)

En models/user_mailer.rb


class UserMailer < ActionMailer::Base
def sent()
@subject = "El titulo de tu correo"
@recipients = 'correo@de.destino'
@from = 'correo@de.origen'
@sent_on = Time.now
@body["user"] = "Pasale alguna variable para personalizar tu correo"
end
end

Solo 2 pasos mas.

En tus vistas

views/user_mailer/sent.rhtml -> El mensaje y podras pasar la variable(Ups!! tu objeto! Recuerda: En ruby absolutamente todo es un objeto) enviada en el body


Bienvenidos
Tus datos son:
user: <%= @user.login %>
Nota: Si tu cuenta no es activada en 24 horas sera borrado el registro.

(En el punto anterior puedes usar etiquetas html para enriquecer el correo.

y finalmente para hacer uso de el.

En cualquiera de tus controladores/metodo o donde quieras hacerlo (Just try to Be DRY).


#Envio el correo
email = UserMailer.create_sent() #Aqui puedes pasarle objetos.
email.set_content_type("text/html")
UserMailer.deliver(email)

Y listo, Ya estas enviando correos con tu flamante aplicación rails.

He tenido algunos problemas con el soporte UTF-8 si alguien tuviese experiencia con lo anterior, comentelo!

Comments (18)

RailsConf 2007

Entre los dias 17-20 de Mayo se realizo la conferencia mundial de ruby on rails en Portland, Oregon.

503984317_e597952be4

Los organizadores han ido subiendo las presentaciones poco a poco y las puedes encontrar en la pagina de la conferencia.

El vuelo que esta agarrando Rails es cada vez mas grande, que ganas de haber podido asistir a la conferencia…

Comments (0)

Como instalar Rails en OS X en 6 pasos

Porque lo prometido es deuda, les contare como deje mi equipo operativo en un plazo muy corto cuando me compre el mbp y deje de lado el mundo de los pcs, esta será una guia super basica, para gente que no se maneja bien en OS X pero que quieren empezar a trabajar en Rails lo antes posible.

1. Primero apuntante en la lista de correos de Ruby on Rails en español en su sitio web.
La actividad en la lista es super intensa y es una excelente manera de ir viendo como va avanzando la cosa

2. Suscribete a RubyInside.com y todas las paginas que hablen sobre ruby incluyendo este blog :).

Para instalar Rails, necesitas 3 cosas. Instalar MYSQL (en mi caso lo prefiero, puedes hacerlo con SQLITE, etc), rubygems (Para poder instalar gemas empezando por la de rails) y para terminar Mongrel que sera el encargado de servir tus paginas (En tu maquina de desarrollo, en este caso tu MAC no es necesario instalar mongrel pero por razones de deploy a producción el recomendable).

Una nota antes de continuar, para ejecutar todo el codigo que te voy mostrar, un par de lineas usa el Terminal, lo puedes abrir dirigiendote a Aplicaciones > Utilidades.

3. Rubygems, primero para despues hacer todo lo demas con gemas.

3.1 Bajate el tar de aqui, elige la ultima versión.

3.2 En la ubicacion en donde descomprimas la carperta, solo escribe:


1. ruby setup.rb
2. ruby install

4. Una vez teniendo instalado RubyGems, instala Mysql de la siguiente forma:


ruby gem install mysql

Te va a aparecer un menu de opciones elige la primera que diga ruby entre parentesis.

5. Instala Rails


ruby gem install rails

6. Para terminar instala Mongrel

ruby gem install mongrel

Ya esta, tiene Ruby on Rails corriendo, porque en mi caso instale Mongrel, porque en mi maquina de producción sirvo las paginas con mongrel y apache, entonces queria tener el mismo entorno en mi computador.

No sabes como empezar a rodar con Rails, te dejo unenlace a una de las mejores listas de recursos sobre rails en Internet, creada por la gente de Tractis y sigue algun tutorial.

Comments (4)

Hello I’m Ruby on Rails

Via | Railsenvy

Comments (0)

Pensamiento: Echarse para atras y mirar la consola

No hay nada como estirar las piernas, tomarse la cabeza y mirar como pasan las tareas por la consola al ejecutar cap deploy_with_migrations.

Comments (0)

Conferencia Rails Hispana, Parte 2

La conferencia se llevo sin problemas, algunos problemas de horario, pero todo perdonable gracias a la gran organización que se han mandando, desde el stream en vivo de la conferencia hasta invitar en vivo y en directo a participar a gente en México siguiendo la conferencia en vivo y en directo desde el pais del norte america.

Participe en la siguientes charlas:

Soluciones de internacionalización en Rails
Esta charla la dieron unos tipos que ni recuerdo el nombre de su empresa, sin decir que estubo mala, solo digo que no me gusto, un poco “Anti-Cristos” de Rails, en el sentido de dar a entender que no se puede hacer mucho con ello en el tema de Internacionalización.

Seguridad de Aplicaciones Web
Esta charla aunque la dieron en una aula muy pequeña, “estaba llenisima” me tube que sentar en el piso. Pero estubo muy buena mostrando en vivo y en directo como con Injecciones SQL puedes hacerte de una aplicación un CAOS y como Rails soluciona este problema muy fácilmente.

Optimización y desnormalización del modelo de datos en Active Record
Aqui nos contaron muy rápidamente como Rails no es mágico y que a veces hay que recurrir a propios Hacks para poder hacer que esto corra de manera correcta sin sobre carga

Rails desde el codigo
Un tipo de si no me equivoco ASP Gems nos mostro básicamente como funciona el Core de Rails y sus 70.000 lineas de código que deja en claro que Rails no es un juego y que detras existe un gran trabajo.

Luego una charla de empresas en donde gente como The-Cocktail, David Blanco de Tractis y otras empresas nos contaron como se ha desarrollado en la “vida real” el desarrollo en Rails.

La conferencia Plenaria se la dejaron a The-Cocktail nuevamente con su proyecto La Coctelera que sin lugar a duda dentro de España es la aplicación Rails funcionando mas grande, nos contaron su experiencia en como su crecimiento ha llevado a un contastante desarrollo para hacer de su aplicación mas estable.

No les doy mas detalles porque segun tengo entendido la organización de la conferencia espera subir todas las slides de la conferencia a la pagina.

Algunas Anécdotas

Tube la oportunidad de conversar un par de minutos con David Blanco, quien me hizo las gestiones para poder pagar la conferencia aqui en Madrid. Les recomiendo seguir muy de cerca su proyecto Tractis que promete.

Muy bien conoci a un tipo muy simpático llamado Jesús con el cual comparti gran parte del tiempo dentro de la conferencia, una vez terminada ellos se fueron a cenar, yo me vine a la Hostel a dejar las cosas y luego me fui en donde estaban todos, EL Locua un club nocturno, en donde estaban todos me tome unos Whiskies y unas cervezas. El local estaba muy muy bueno.

Para terminar la noche Fernando de The-Cocktail tubo la amabilidad de traerme en su carro a la Hostel.

En resumen… un dia increíble, conocí mucha gente y aprendi montones, mañana esperamos otras charlas buenisimas y el broche de oro con una video-conferencia en vivo y en directo con el “Maestro” Creador de Rails DHH.

Comments (2)

Conferencia Rails Hispana, Parte 1

Como muchos bloggeros espero ir reportiando la conferencia para compartirlo con ustedes, por el momento les dejo un dato muy muy interesante, todas las presentaciones en el salon principal serán transmitidas en directo con streaming, pinchen aca y podran ver lo mismo que yo estoy viendo en vivo..

Durante la tarde les sigo contando.

Comments (0)
norellan