0

Como enviar emails con rails parte 1

Posted by mauro on Dec 15, 2008 in Rails

Enviar email hoy en dia desde tu aplicacion web es muy util, para validar usuarios, notificaciones, boletines, etc..
En este articulo veremos en unos simples pasos como lo podemos hacer con rails

Revision

  1. script/generate mailer notify
  2. Crear modelo  (models/notify.rb)
  3. Crear tu template para el email (views/notify/)
  4. Enviar tu mensaje
  5. Tener instalado postfix o sendmail

#Generar el modelo mailer

$ script/generate mailer notify

#Crear el metodo en el modelo mailer que enviara el email(models/notify.rb)

def send_friend(option)
      @recipients   = option[:emailamigo]
      @from         = "no-reply@upitiaya.com"
      headers         "Reply-to" => "#{option[:email]}"
      @subject      = "Te recomendaron un enlace"
      @sent_on      = Time.now
      @content_type = "text/html"
 
      body[:nombre]  = option[:nombre]
      body[:nombreamigo]  = option[:nombreamigo]
      body[:mensaje]  = option[:mensaje]
      body[:pagina]  = option[:pagina]
 
  end

Crear la vista del metodo (views/notify/send_friend.html.erb)

#las variables  como body[:pagina] definida en el metodo send_friend se acceden como @pagina desde la vista
 
<p>Hola @nombreamigo, tu amigo <i><%= @nombre %></i>. te recomendo el siguiente link </p>
 
<a href="#{@pagina}">"#{@pagina}"</a>
<br/>
<p>"#{@mensaje}"</p>

#Ahora armamos la accion en el controlador

def send_friend
  Notify.deliver_send_friend(params[:email])
end

Si tenemos postfix instalado localmente, deberia funcionar sin problema, cualquier duda deja tu comentario!
En la parte ll de este articulo veremos como enviar un email usando una cuenta de gmail.

 
0

Descargar los resultados en una planilla de calculo excel (xls)

Posted by mauro on Dec 15, 2008 in Rails

En este articulo vamos a ver como podemos descargar los resultados de una busqueda en una planilla de calculo excel.

#Controlador: expedientes-controller.rb

def excel
  headers['Content-Type'] = "application/vnd.ms-excel"
  headers['Content-Disposition'] = 'attachment; filename="expedientes.xls"'
  headers['Cache-Control'] = ''
  @expedientes = Expediente.find(:all)
  render :layout=> false
end

#vista: expedientes/excel.html.erb

 
<table align="center" cellspacing="1" cellpadding="1" border="1">
<tr>
<th>Nro Expediente</th>
<th>Registrante</th>
</tr>
<%for resource in @expedientes%>
<tr>
<td><%=resource.nro_expediente%></td>
<td><%=resource.persona.nombre_completo%></td>
</tr>
 
<% end %>
 
</table>

Como veran solo hay que generar un html con tablas, ya que excel lee perfectamente este tipo de html como planilla y luego configurarlo con la cabecera de excel, para que el navegador lo descarge como tal y listo :) .

 
0

Configurar Paperclip con Amazon S3 para uploads

Posted by mauro on Dec 12, 2008 in Rails

Paperclip es un simple y a la vez potente plugin de rails que te facilita el upload de archivos, en este articulo veremos como utilizar paperclip con el sistema de almacenamiento de amazon S3 para hacer upload.

Agregar el siguiente codigo en el modelo a utilizar para el upload

 
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>",:small => "22x22" },:storage => :s3,
       :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
       :path => ":attachment/:id/:style/:basename.:extension",
       :bucket => 'pruebagalerias'

Crear el archivo config/s3.yml con el contenido

access_key_id: YOURSECRETACCESSID
secret_access_key: YOUR-secRE/TACCe\ssKEy

Instalar la gema right_aws

gem install right_aws

Listo, con esos pasos todo el upload de archivos se hara en S3 amazon. Los  demas pasos para configurar paperclip no varian, asi que pueden seguir el readme del plugin

 
1

Instalar plugins de forma automatica en rails

Posted by mauro on Dec 12, 2008 in Rails

Perdiendo tiempo instalando plugins cada vez que necesitaba armar una apps en rails arme un plugin con sake para automatizar esta tarea

 
#install rake: sake -i apt.rake apt:plugins:install
#sake apt:plugins:install set=common #=> installs using script/plugin install
#sake apt:plugins:install set=common method=external # => installas using script/plugin install -x
#sake apt:plugins:install set=common method=clone # => installs via git clone
 
namespace :apt do
  namespace :plugins do
    desc "instala plugins de forma automatica con apt para rails :)"
    task :install do
      sets = {
        :auto_admin => {
          :administrate_me => "git://github.com/insignia/administrate_me.git",
        },       
         :auth => {
          :restful_authentication => "git://github.com/technoweenie/restful-authentication.git",
          :role_requirement => "git://github.com/timcharper/role_requirement.git"
        },       
        :common => {  
          :asset_packager => "git://github.com/sbecker/asset_packager.git"  
          :paperclip => "git://github.com/thoughtbot/paperclip.git",
          :will_paginate => "git://github.com/mislav/will_paginate.git",
          :annotate_models => "git://github.com/collectiveidea/annotate_models.git", 
          :exception_notification => "git://github.com/rails/exception_notification.git", 
        },
      }
 
      raise "Debes especificar set=[#{sets.keys.join(",")}]" unless sets.keys.map{|k|k.to_s}.include?(ENV['set'])
 
      set = sets[ENV['set'].to_sym]
      plugins = set.to_a.map
      text = set.to_a.map{|a|a.first}.join("\n  * ")
      run_method = ENV['pretend'] == "true" ? :p : :system
      install_method = (ENV['method'] || "rails").to_sym
 
      set.each do |name,url|
        if install_method == :clone
          send run_method, "git clone #{url} vendor/plugins/#{name} && rm -rf vendor/plugins/#{name}/.git"
        elsif install_method == :external
          send run_method, "script/plugin install #{url} -x"
        else
          send run_method, "script/plugin install #{url} --force"
        end
      end
    end
  end
 
end

 
0

Gedit como texmate para rubyonrails

Posted by mauro on Dec 12, 2008 in Rails

Si bien tengo mi flamante minimac :) , en la cual programo con el potente editor de texto textmate, linux me sigue pareciendo por lejos el mejor sistema operativo incluso mejor que macosX, entonces divagando un poco buscando un ide similar a textmate en linux, llegue a la conclusion despues de diversas pruebas que lo mejorcito es tunear el gedit, es liviano, rapido y agradable.
les dejo la GUIA que probe y me funciono bien ya que hay muchas dando vueltas y no trabajan correctamente

Copyright © 2010 Chebyte’s Blog All rights reserved.