Artigos com o marcador Ruby e Rails

Usando o Gmail para enviar e-mail com o ActionMailer no Rails

Existe uma maneira muito fácil de se enviar e-mails no Rails e usando o Gmail. Nesse pequeno tutorial tentarei explicar como fazer isso funcionar.

Primeiramente é preciso saber que o Gmail utiliza para autenticação de protocolo SMTP (envio de e-mails) o ssl/tls. Essa forma de autenticação não é suportada nativamente pelo ActionMailer. Isso quer dizer que precisaremos de uma ajudinha para podermos enviar e-mails utilizando o Rails e o Gmail.

Essa ajudinha é uma biblioteca que está voando pela Internet (eu não sei quem é o autor e muito menos da onde ela saiu) e nos ajudará com a autenticação. Eu tenho uma cópia dessa biblioteca em meu GitHub, você pode pegá-la aqui.

Com a biblioteca em mãos copie ela para a pasta lib do seu projeto Rails. Provavelmente ficará assim o caminho:

/lib/smtp_tls.rb

Agora abra o arquivo config/environment.rb e lá no fim, bem lá no fim mesmo, adicione o seguinte trecho de código:

ActionMailer::Base.default_content_type = "text/html"
ActionMailer::Base.smtp_settings = {
   :address => "smtp.gmail.com",
   :port => 587,
   :authentication => :plain,
   :user_name => "seuemail@gmail.com", #Você pode usar o Google Apps!
   :password => 'suasenha'
}

Bacana. Está tudo configurado. Agora vamos ver como se fazer no ActionMailer para se enviar um e-mail. Vamos gerar um novo Mailer. Em seu console digite:

ruby script/generate mailer Notificador

Seu novo mailer será gerado. Após a geração, abra ele (app/models/notificador.rb)

Adicione o seguinte método:

def notificar
     recipients "destinatario@email.com"
     from  "meumail@meuemail.com"
     subject "Titulo do Email"
end

Agora você precisa adicionar uma view com o mesmo nome desse método, assim como se faz com os Controllers. Nese caso, a vew ficaria views/teste/notificar.erb

Nesse arquivo ficará tudo o que você quer enviar ao destinatório. É o corpo do e-mail mesmo. Você pode utilizar variáveis de instância caso queira passar alguma informação para a view, da mesma forma que é feito nos controllers.

Criada a view, basta chamar o mailer nos controllerspara enviar o email da seguinte forma:

Notificador.deliver_notificar

Repare que é colocado um deliver_ ali antes do nome do método que setamos. Isso é normal.

Se tudo ocorrer bem seu e-mail será enviado. Porém enviando um e-mail dessa forma irá ter um tempo de request mais demorado.

  • Share/Bookmark

Obtendo Hash MD5 e SHA com Rails

Para se obter hashs tanto MD5 como SHA com Rails é muito fácil. Abaixo segue o que eu faço para calcular os Hashs:

def md5(str)
    return Digest::MD5.hexdigest(str)
end
 
def sha1(str)
    return Digest::SHA1.hexdigest(str)
end
 
def sha256(str)
    return Digest::SHA256.hexdigest(str)
end

Você pode ver no exemplo acima que coloquei três funções. Uma para MD5, outra para SHA1 e outra para SHA256. Mas existem outros ainda. Veja:

  1. Digest::SHA1.hexdigest() – Produz 40 caracteres de dígitos hexadecimais.
  2. Digest::SHA256.hexdigest() – Produz 64 caracteres de dígitos hexadecimais.
  3. Digest::SHA384.hexdigest() – Produz 96caracteres de dígitos hexadecimais.
  4. Digest::SHA512.hexdigest() – Produz 128 caracteres de dígitos hexadecimais.

Se quiser, você pode testar essas funções no console do Rils. Basta abrir o console:

ruby script/console

Digite o comando:

strHash = Digest::SHA1.hexdigest("string")

A saída deverá ser:

=> "ecb252044b5ea0f679ee78ec1a12904739e2904d"

Fácil e simples.

  • Share/Bookmark

Rails Summit Latin America 2008 – Excelente

Evento totalmente excelente.

Para quem esteve no evento sabe o que eu estou falando. Foi um evento muito, mas muito bom mesmo. As palestras de ltíssimo nível, bem organizado, local be acessível para que vem de fora e ainda com as “locawebzetes”. Fábio Akita e o pessoal da organização realmente estão de parabéns.

Dia 1

Fábio Akita abriu o evento e passou a palavra para Gilberto Mautner que é co-fundador da Locaweb. Esse é o cara que trouxe o Ruby on Rails para a Locaweb. Na abertura, tivemos um vídeo onde os dois loucos do RailsEnvy mandaram uma mensagem para o Rails Summit Latin America 2008. Vocês podem ver o vídeo aqui: http://vimeo.com/1974744

Sobre as palestras, no primeiro dia tivemos excelentes palestras com Chad Fowler falando sobre como ser reconhecido e como ser “remarkable” (be remarkable) com o que você faz. Esse assunto tanto cabe em desenvolvimento como em qualquer outra área profissional.

David Heinemeir Hanson (D.H.H) respondeu dúvidas e questões do pessoal a respeito (logicamente) do Ruby on Rails. Foram abordadas questões sobre Thread Safety, Internacionalização, Release do Rails 2.2 (a qual ele não revelou) entre outras.

Sobre Rest tivemos uma palestra muito legal com George Malamidis e Danilo Sato, ambos da ThoughtWorks.

Assisti também a palestra de Carlos Brando e a experiência dele e da equipe brasileira trabalhando para a SurgeWorks. Foi abordado assuntos bem interessantes como a aplicação de métodos ágeis com equipes remotas.

Tivemos um keynote de Chris Wanstrath criador do repositório GitHub um dos mais acessados pela comunidade Rails. Ele contou sobre a trajetória de sua vida profissional até chegar no GitHub.

E para finalizar o primeiro dia tivemos uma “desconferência” (Birds of a Feather) onde quem quisesse subir no palanque para falar o que queria sobre Ruby/Rails ou relacionado podia. Uma momento muito bom de descontração mesmo.

Nesse primeiro dia não tive a oportunidade de assistir algumas palestras pois eram paralelas com outras. Assim não poderei falar muito sobre as palestras do Fábio Akita e Dr.Nic.

Dia 2

Já logo pela manhã começamos com a palestra dos carinhas (Ninh Bui e Hongli Lai) da Phusion. Essa palestra foi excelente. A apresentação dos caras é sensacional. Falaram sobre passenger, escalabilidade, distribuição de carga…

Depois por áudio conferência, tivemos uma apresentação de Charles Nutter e Thomas Enebo que são criadores mantenedores do JRuby. Fizerem demonstração incríveis e como é fácil rodar aplicações Swing com JRuby e também alguns benchmarks com JRuby.

Fiquei curioso sobre a palestra de George Guimarães que falou sobre deployments e configuração de ambiente de produção para aplicações Rails. Ele também abordou algumas dificuldades que tiveram na construção da StartUp Pagestacker.

Para mim, as melhores palestras vieram nesse momento. As palestras de David Chelimsky sobre RSpec e sobre o Cucumber foram excelentes. Explicou os conceitos do BDD (Behavior Driven Development) e do TDD (Test Drive Development) além de mostrar exemplos reais da utilização do RSpec e do Cucumber. Fiquei honrado de poder assitir a palestra do David e espero poder assistir muitas outras.

Danilo Sato voltou no dia 2 (mas agora sem falar inglês e sem o George Malamidis) e também fez uma ótima apresentação sobre testes automatizados. Mostrou exemplos e problemas enfrentados no dia a dia do desenvolvedor na hora de elaborar testes.

Fabio Kung também palestrou no evento falando sobre o uso de JRuby porém mais focado na VM Java do que no código Ruby propriamente dito. Apresentou vantagens sobre o uso do JRuby ao invés do interpretador do Matz e exemplificou isso no uso de memória, e threads.

E para finalizar o ciclo de palestras no segundo dia tivemos o keynote de Obie Fernandez que falou com é dia a dia no desenvolvimento dos projetos de sua empresa Hashrocket onde eles usam métodos ágeis e Rails. Mostrou o que deve ser feito e quais as atitude a serem tomadas para se ter sucesso no desenvolvimento com Rails. Essa também foi uma das melhores palestras do dia.

Assim como no primeiro dia não consegui assistir a todas as palestras do dia devido as sessões paralelas então acabei perdendo as palestras de Jay Fields, Manoel Lemos, Vinícius Teles, Phillippe Hanrigou e Luis Lavena.

Depois tivemos alguns sorteios dos patrocinadores (Intel, Sun, Accept, Info Exame, Linux Magazine…) e da Locaweb. Saí do evento por volta das 20:45 e fiquei totalmente satisfeito com o que vi e aprendi. Valeu muito a pena o investimento. Se eu fosse você já começava a me preparar para o Rails Summit Latin America 2009. Eu já estou me preparando.

Fotos

Aqui segue alguns materiais “coletados” pela Net. Como eu sou uma anta e esqueci de levar máquina fotográfica, pegarei emprestado os Flickrs de algumas pessoas que foram ao evento:

Assim que eu conseguir mais materiais legais do evento eu com certeza postarei. Muitos palestrantes irão disponibilizar suas apresentações na Web, assim que eu descobrir onde elas ficarão eu também postarei.

Veja também o LiveStream do BlogBlogs.

  • Share/Bookmark

Rails Summit Latin America

Fala galera! Já faz um tempinho que não posto pois o trabalho está corrido. Vamos ver se daqui para frente volto apostar com mais frequência, tá difícil, mas vou tentar!

Bom, volto com esse post para divulgar o maior evento sobre Ruby on rails da América Latina que vai acontecer aqui no Brsil. Em São Paulo. É o Rails Summit Latin America. O evento promete e os palestrantes são de altíssimo nível. Mas muito alto mesmo, o próprio DHH, criador do framework, irá palestrar.

No blog do Akita há muitas informações sobre o evento, veja mais detalhes aqui:

A Locaweb está partocinando o evento e você pode fazer sua inscrição aqui:

No mesmo site da inscrição contém os valores, os palestrantes, o local… Tudo sobre o evento.

Eu já fiz a minha incrição e estarei lá com certeza. Você já fez a sua?

  • Share/Bookmark