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
- script/generate mailer notify
- Crear modelo (models/notify.rb)
- Crear tu template para el email (views/notify/)
- Enviar tu mensaje
- 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.
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
.
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
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
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
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