miércoles, 7 de noviembre de 2007

Como crear un excel y Zip en Ruby On Rails

como puse en unos post anteriores, para crear excel y Zip en ruby, se necesitan 2 gemas.

bueno aqui el codigo que sirve para aquello, un poco modificado para que se entienda



#inicio de pagina .rb ( esto va en los controllers )
# incluyo iconv por la siemple razon que los acentos en UTF8 se cambian cuando la codificación de caracteres es diferente
require 'iconv'
# la gema de excel
require "spreadsheet/excel"
include Spreadsheet
# para ZIP
require 'zip/zip'


# inicio de codigo
class Excel < style="color: rgb(255, 255, 51);"> layout nil

def excel
# pongo fecha solo para saber cuando se crearon los excel en formato aca de dia-mes-año
fecha =Date.today.strftime("%d-%m-%Y")
#aqui pongo el nombre del archivo a crear
nombre_archivo = "/tmp/excel_#{fecha}.xls"
# creo una pequeña funcion para cambiar la codificacion de carateres de utf8 a occidental
ic = Iconv.new('WINDOWS-1252', 'UTF-8')
# creando el libro excel
workbook = Excel.new(nombre_archivo)
# añado una hoja ( alternativo nombre hoja )
worksheet = workbook.add_worksheet("alternativo")
worksheet.store_colinfo(first=0, last=2, 20, ixfe=0x0F, 0)
# mas info
#escribiendo en la hoja
worksheet.write(FILA,COLUMNA, DATOS)
#cerrando el libro
workbook.close
#cerrando en iconv
ic.close
#creacion archivo ZIP
@archivo = "#{RAILS_ROOT}/tmp/empresas.zip"
Zip::ZipFile.open(@archivo, Zip::ZipFile::CREATE) { |zipfile|
zipfile.add(File.basename(
nombre_archivo),nombre_archivo)
}


#enviando el archivo a descarga del excel
send_file(nombre_archivo, :stream => false)

#enviando el archivo a descarga ZIP
send_file(@archivo, :stream => false)

#eliminado el archivo del temporal....
FileUtils.rm(nombre_archivo)
FileUtils.rm(@archivo)
end


end

martes, 2 de octubre de 2007

Borrado de carpetas recursivo y con pregunta en linux

Gracias nano por el dato
( ojo que los [ ] son solo para ejemplo de donde van ,
for a in $(find [nombre carpeta] -iname '.[extension]' -print) ; do rm -rfi $a ; done

miércoles, 26 de septiembre de 2007

Como instalar ZIP y Excel en Ruby on rails

Trabajando con mi compañero Nano ( coyote ) que es mi maestro de ruby, hizo unos cuantos programas para generar zip y excel.

Hace un tiempo tuve que reinstalar todo en mi pc asi que perdi algunas cosas como estas gemas para poder crearlos, asi que ahora les digo como se instalan en su ruby...

ZIP
usuario@equipo:~$sudo gem install rubyzip
Password: xxxxxxxxxxxxxxx
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rubyzip-0.9.1

Excel
usuario@equipo:~$sudo gem install spreadsheet-excel
Successfully installed spreadsheet-excel-0.3.5.1
Installing ri documentation for spreadsheet-excel-0.3.5.1...
Installing RDoc documentation for spreadsheet-excel-0.3.5.1...

y para actualizar las gemas lo siguiente
sudo gem update --include-dependencies

jueves, 9 de agosto de 2007

Crear una llave publica/privada con ssh

usuario@equipo : ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): /home/usuario//.ssh/usuario_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/usuario/_rsa.
Your public key has been saved in /home/usuario/.ssh/usuario_rsa.pub.
The key fingerprint is:
क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्क्ष्

Gracias nano por los datos

lunes, 30 de julio de 2007

Instalando Ruby On Rails con mongrel en KUbuntu 7.04 (Feisty Fawn)

No soy muy buen redactor de textos, asi que vamos al punto:

antes que todo, esta es una instalación de ruby on rails con un kubuntu instalado por defecto, asi que no tiene ningun otro programa, lenguaje que no venga con la instalacion por defecto, por lo cual, necesitamos instalar algunas cosillas antes como
build-essential, esto porque para instalar mongrel al final de esto necesita compiladores.
asi que el primer paso es:


usuario@kubuntu:~$ sudo apt-get install build-essential
Password: ***********
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo información de estado... Hecho
Se instalarán los siguientes paquetes extras:
dpkg-dev g++ g++-4.1 libc6-dev libstdc++6-4.1-dev linux-libc-dev
Paquetes sugeridos:
debian-keyring gcc-4.1-doc lib64stdc++6 glibc-doc manpages-dev libstdc++6-4.1-doc
Se instalarán los siguientes paquetes NUEVOS:
build-essential dpkg-dev g++ g++-4.1 libc6-dev libstdc++6-4.1-dev linux-libc-dev
0 actualizados, 7 se instalarán, 0 para eliminar y 0 no actualizados.
Necesito descargar 8053kB de archivos.
Se utilizarán 33,7MB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? s
Des:1 http://security.ubuntu.com feisty-security/main linux-libc-dev 2.6.20-16.29 [667kB]
Des:2 http://cl.archive.ubuntu.com feisty/main libc6-dev 2.5-0ubuntu14 [3018kB]
Des:3 http://cl.archive.ubuntu.com feisty/main libstdc++6-4.1-dev 4.1.2-0ubuntu4 [1632kB]
Des:4 http://cl.archive.ubuntu.com feisty/main g++-4.1 4.1.2-0ubuntu4 [2581kB]
Des:5 http://cl.archive.ubuntu.com feisty/main g++ 4:4.1.2-1ubuntu1 [1428B]
Des:6 http://cl.archive.ubuntu.com feisty/main dpkg-dev 1.13.24ubuntu6 [147kB]
Des:7 http://cl.archive.ubuntu.com feisty/main build-essential 11.3 [6974B]
Descargados 8053kB en 3m11s (42,1kB/s)
Seleccionando el paquete linux-libc-dev previamente no seleccionado.
(Leyendo la base de datos ...
97291 ficheros y directorios instalados actualmente.)
Desempaquetando linux-libc-dev (de .../linux-libc-dev_2.6.20-16.29_i386.deb) ...
Seleccionando el paquete libc6-dev previamente no seleccionado.
Desempaquetando libc6-dev (de .../libc6-dev_2.5-0ubuntu14_i386.deb) ...
Seleccionando el paquete libstdc++6-4.1-dev previamente no seleccionado.
Desempaquetando libstdc++6-4.1-dev (de .../libstdc++6-4.1-dev_4.1.2-0ubuntu4_i386.deb) ...
Seleccionando el paquete g++-4.1 previamente no seleccionado.
Desempaquetando g++-4.1 (de .../g++-4.1_4.1.2-0ubuntu4_i386.deb) ...
Seleccionando el paquete g++ previamente no seleccionado.
Desempaquetando g++ (de .../g++_4%3a4.1.2-1ubuntu1_i386.deb) ...
Seleccionando el paquete dpkg-dev previamente no seleccionado.
Desempaquetando dpkg-dev (de .../dpkg-dev_1.13.24ubuntu6_all.deb) ...
Seleccionando el paquete build-essential previamente no seleccionado.
Desempaquetando build-essential (de .../build-essential_11.3_i386.deb) ...
Configurando linux-libc-dev (2.6.20-16.29) ...
Configurando libc6-dev (2.5-0ubuntu14) ...
Configurando dpkg-dev (1.13.24ubuntu6) ...
Configurando libstdc++6-4.1-dev (4.1.2-0ubuntu4) ...
Configurando g++-4.1 (4.1.2-0ubuntu4) ...
Configurando g++ (4.1.2-1ubuntu1) ...
Configurando build-essential (11.3) ...


El paso 2 instalar los paquetes de ruby ( en mi caso instalo las librerias para Postgresql
libdbd-pg-ruby1.8), irb ( Interfaz interactiva para Ruby), ruby gem (gestor de paquetes de ruby), rdoc (documentación), ri (Muestra, a partir de una base de datos, documentación sobre clases, módulos y métodos Ruby), ruby1.8-examples ( ejemplos )

usuario@kubuntu:~$ sudo apt-get install ruby ruby1.8 ri irb libdbd-pg-ruby1.8 libgems-ruby1.8 ruby1.8-dev rdoc rubygems ruby1.8-examples


Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo información de estado... Hecho
ruby ya está en su versión más reciente.
ruby1.8 ya está en su versión más reciente.
Se instalarán los siguientes paquetes extras:
irb1.8 libdbi-ruby1.8 libopenssl-ruby1.8 libpgsql-ruby1.8 libpq4 libreadline-ruby1.8 rdoc1.8 ri1.8
Paquetes sugeridos:
libdbi-ruby
Se instalarán los siguientes paquetes NUEVOS:
irb irb1.8 libdbd-pg-ruby1.8 libdbi-ruby1.8 libgems-ruby1.8 libopenssl-ruby1.8 libpgsql-ruby1.8 libpq4 libreadline-ruby1.8 rdoc rdoc1.8
ri ri1.8 ruby1.8-dev ruby1.8-examples rubygems
0 actualizados, 16 se instalarán, 0 para eliminar y 0 no actualizados.
Necesito descargar 3790kB de archivos.
Se utilizarán 50,1MB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? s
Des:1 http://cl.archive.ubuntu.com feisty/universe libreadline-ruby1.8 1.8.5-4ubuntu2 [197kB]
Des:2 http://cl.archive.ubuntu.com feisty/universe irb1.8 1.8.5-4ubuntu2 [235kB]
Des:3 http://cl.archive.ubuntu.com feisty/universe irb 1.8.2-1 [3660B]
Des:4 http://cl.archive.ubuntu.com feisty/universe libpq4 8.1.8-1ubuntu3 [270kB]
Des:5 http://cl.archive.ubuntu.com feisty/universe libpgsql-ruby1.8 0.7.1-10 [39,1kB]
Des:6 http://cl.archive.ubuntu.com feisty/universe libdbi-ruby1.8 0.1.1-1 [34,1kB]
Des:7 http://cl.archive.ubuntu.com feisty/universe libdbd-pg-ruby1.8 0.1.1-1 [25,2kB]
Des:8 http://cl.archive.ubuntu.com feisty/universe rdoc1.8 1.8.5-4ubuntu2 [310kB]
Des:9 http://cl.archive.ubuntu.com feisty/universe libopenssl-ruby1.8 1.8.5-4ubuntu2 [291kB]
Des:10 http://cl.archive.ubuntu.com feisty/universe libgems-ruby1.8 0.9.0-5 [148kB]
Des:11 http://cl.archive.ubuntu.com feisty/universe rdoc 1.8.2-1 [3852B]
Des:12 http://cl.archive.ubuntu.com feisty/universe ri1.8 1.8.5-4ubuntu2 [1228kB]
Des:13 http://cl.archive.ubuntu.com feisty/universe ri 1.8.2-1 [3762B]
Des:14 http://cl.archive.ubuntu.com feisty/main ruby1.8-dev 1.8.5-4ubuntu2 [712kB]
Des:15 http://cl.archive.ubuntu.com feisty/universe ruby1.8-examples 1.8.5-4ubuntu2 [242kB]
Des:16 http://cl.archive.ubuntu.com feisty/universe rubygems 0.9.0-5 [46,8kB]
Descargados 3790kB en 1m28s (42,9kB/s)
Seleccionando el paquete libreadline-ruby1.8 previamente no seleccionado.
(Leyendo la base de datos ...
99041 ficheros y directorios instalados actualmente.)
Desempaquetando libreadline-ruby1.8 (de .../libreadline-ruby1.8_1.8.5-4ubuntu2_i386.deb) ...
Seleccionando el paquete irb1.8 previamente no seleccionado.
Desempaquetando irb1.8 (de .../irb1.8_1.8.5-4ubuntu2_all.deb) ...
Seleccionando el paquete irb previamente no seleccionado.
Desempaquetando irb (de .../archives/irb_1.8.2-1_all.deb) ...
Seleccionando el paquete libpq4 previamente no seleccionado.
Desempaquetando libpq4 (de .../libpq4_8.1.8-1ubuntu3_i386.deb) ...
Seleccionando el paquete libpgsql-ruby1.8 previamente no seleccionado.
Desempaquetando libpgsql-ruby1.8 (de .../libpgsql-ruby1.8_0.7.1-10_i386.deb) ...
Seleccionando el paquete libdbi-ruby1.8 previamente no seleccionado.
Desempaquetando libdbi-ruby1.8 (de .../libdbi-ruby1.8_0.1.1-1_all.deb) ...
Seleccionando el paquete libdbd-pg-ruby1.8 previamente no seleccionado.
Desempaquetando libdbd-pg-ruby1.8 (de .../libdbd-pg-ruby1.8_0.1.1-1_all.deb) ...
Seleccionando el paquete rdoc1.8 previamente no seleccionado.
Desempaquetando rdoc1.8 (de .../rdoc1.8_1.8.5-4ubuntu2_all.deb) ...
Seleccionando el paquete libopenssl-ruby1.8 previamente no seleccionado.
Desempaquetando libopenssl-ruby1.8 (de .../libopenssl-ruby1.8_1.8.5-4ubuntu2_i386.deb) ...
Seleccionando el paquete libgems-ruby1.8 previamente no seleccionado.
Desempaquetando libgems-ruby1.8 (de .../libgems-ruby1.8_0.9.0-5_all.deb) ...
Seleccionando el paquete rdoc previamente no seleccionado.
Desempaquetando rdoc (de .../archives/rdoc_1.8.2-1_all.deb) ...
Seleccionando el paquete ri1.8 previamente no seleccionado.
Desempaquetando ri1.8 (de .../ri1.8_1.8.5-4ubuntu2_all.deb) ...
Seleccionando el paquete ri previamente no seleccionado.
Desempaquetando ri (de .../archives/ri_1.8.2-1_all.deb) ...
Seleccionando el paquete ruby1.8-dev previamente no seleccionado.
Desempaquetando ruby1.8-dev (de .../ruby1.8-dev_1.8.5-4ubuntu2_i386.deb) ...
Seleccionando el paquete ruby1.8-examples previamente no seleccionado.
Desempaquetando ruby1.8-examples (de .../ruby1.8-examples_1.8.5-4ubuntu2_all.deb) ...
Seleccionando el paquete rubygems previamente no seleccionado.
Desempaquetando rubygems (de .../rubygems_0.9.0-5_all.deb) ...
Configurando libreadline-ruby1.8 (1.8.5-4ubuntu2) ...
Configurando irb1.8 (1.8.5-4ubuntu2) ...

Configurando irb (1.8.2-1) ...
Configurando libpq4 (8.1.8-1ubuntu3) ...

Configurando libpgsql-ruby1.8 (0.7.1-10) ...
Configurando libdbi-ruby1.8 (0.1.1-1) ...
Configurando libdbd-pg-ruby1.8 (0.1.1-1) ...
Configurando rdoc1.8 (1.8.5-4ubuntu2) ...
Configurando libopenssl-ruby1.8 (1.8.5-4ubuntu2) ...
Configurando libgems-ruby1.8 (0.9.0-5) ...
Configurando rdoc (1.8.2-1) ...
Configurando ri1.8 (1.8.5-4ubuntu2) ...
Configurando ri (1.8.2-1) ...
Configurando ruby1.8-dev (1.8.5-4ubuntu2) ...
Configurando ruby1.8-examples (1.8.5-4ubuntu2) ...
Configurando rubygems (0.9.0-5) ...


Paso 3: ahora instalar rails incluye las dependencias, y asi nos ahorramos de andar instalando lo que se necesite ...



sudo gem install rails --include-dependencies
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rails-1.2.3
Successfully installed rake-0.7.3
Successfully installed activesupport-1.4.2
Successfully installed activerecord-1.15.3
Successfully installed actionpack-1.13.3
Successfully installed actionmailer-1.3.3
Successfully installed actionwebservice-1.2.3
Installing ri documentation for rake-0.7.3...
Installing ri documentation for activesupport-1.4.2...
Installing ri documentation for activerecord-1.15.3...
Installing ri documentation for actionpack-1.13.3...
Installing ri documentation for actionmailer-1.3.3...
Installing ri documentation for actionwebservice-1.2.3...
Installing RDoc documentation for rake-0.7.3...
Installing RDoc documentation for activesupport-1.4.2...
Installing RDoc documentation for activerecord-1.15.3...
Installing RDoc documentation for actionpack-1.13.3...
Installing RDoc documentation for actionmailer-1.3.3...
Installing RDoc documentation for actionwebservice-1.2.3...




paso 4: y ultimo es instalar mongrel
(aca se necesitan los compiladores :)




usuario@kubuntu:~$ sudo gem install mongrel

1. mongrel 1.0.1 (mswin32)
2. mongrel 1.0.1 (ruby)
3. mongrel 1.0 (mswin32)
4. mongrel 1.0 (ruby)
5. mongrel 0.3.13.4 (ruby)
6. mongrel 0.3.13.3 (ruby)
7. mongrel 0.3.13.3 (mswin32)
8. mongrel 0.3.13.2 (mswin32)
9. mongrel 0.3.13.2 (ruby)
10. mongrel 0.3.13.1 (ruby)
11. mongrel 0.3.13.1 (mswin32)
12. mongrel 0.3.13 (ruby)
13. mongrel 0.3.13 (mswin32)
14. mongrel 0.3.12.4 (ruby)
15. mongrel 0.3.12.4 (mswin32)
16. mongrel 0.3.12.3 (mswin32)
17. mongrel 0.3.12.3 (ruby)
18. mongrel 0.3.12.2 (mswin32)
19. mongrel 0.3.12.2 (ruby)
20. mongrel 0.3.12.1 (mswin32)
21. mongrel 0.3.12.1 (ruby)
22. mongrel 0.3.12 (mswin32)
23. mongrel 0.3.12 (ruby)
24. mongrel 0.3.11 (mswin32)
25. mongrel 0.3.11 (ruby)
26. mongrel 0.3.10.1 (ruby)
27. mongrel 0.3.10 (ruby)
28. mongrel 0.3.9 (ruby)
29. mongrel 0.3.8 (mswin32)
30. mongrel 0.3.8 (ruby)
31. mongrel 0.3.7.1 (ruby)
32. mongrel 0.3.7.1 (mswin32)
33. mongrel 0.3.7 (ruby)
34. mongrel 0.3.6 (mswin32)
35. mongrel 0.3.6 (ruby)
36. mongrel 0.3.5 (mswin32)
37. mongrel 0.3.5 (ruby)
38. mongrel 0.3.4 (mswin32)
39. mongrel 0.3.4 (ruby)
40. mongrel 0.3.3 (ruby)
41. mongrel 0.3.2 (ruby)
42. mongrel 0.3.1 (ruby)
43. mongrel 0.3 (ruby)
44. mongrel 0.2.2 (ruby)
45. mongrel 0.2.1 (ruby)
46. mongrel 0.2.0 (ruby)
47. Cancel installation
> 2
Install required dependency daemons? [Yn] y
Install required dependency fastthread? [Yn] Y
Select which gem to install for your platform (i486-linux)
1. fastthread 1.0 (ruby)
2. fastthread 1.0 (mswin32)
3. fastthread 0.6.4.1 (ruby)
4. fastthread 0.6.4.1 (mswin32)
5. fastthread 0.6.3 (ruby)
6. fastthread 0.6.3 (mswin32)
7. fastthread 0.6.2 (ruby)
8. fastthread 0.6.2 (mswin32)
9. Cancel installation
>1
Building native extensions. This could take a while...
fastthread.c: En la función ‘wait_condvar’:
fastthread.c:626: aviso: se pasa el argumento 1 de ‘rb_ensure’ desde un tipo de puntero incompatible
ruby extconf.rb install mongrel
creating Makefile

make
gcc -I. -I/usr/lib/ruby/1.8/i486-linux -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c fastthread.c
gcc -shared -rdynamic -Wl,-export-dynamic -L"/usr/lib" -o fastthread.so fastthread.o -lruby1.8 -lpthread -ldl -lcrypt -lm -lc

make install
mkdir -p /var/lib/gems/1.8/gems/fastthread-1.0/lib
/usr/bin/install -c -m 0755 fastthread.so /var/lib/gems/1.8/gems/fastthread-1.0/lib

make clean
Install required dependency gem_plugin? [Yn] Y

Install required dependency cgi_multipart_eof_fix? [Yn] Y

Building native extensions. This could take a while...
ruby extconf.rb install mongrel
checking for main() in -lc... yes
creating Makefile

make
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c http11.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c tst_search.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c tst_delete.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c http11_parser.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c tst_init.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c tst_grow_node_free_list.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c tst_insert.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -fPIC -Wall -g -fno-strict-aliasing -O2 -fPIC -c tst_cleanup.c
gcc -shared -rdynamic -Wl,-export-dynamic -L"/usr/lib" -o http11.so http11.o tst_search.o tst_delete.o http11_parser.o tst_init.o tst_grow_node_free_list.o tst_insert.o tst_cleanup.o -lruby1.8 -lc -lpthread -ldl -lcrypt -lm -lc

make install
/usr/bin/install -c -m 0755 http11.so /var/lib/gems/1.8/gems/mongrel-1.0.1/lib

make clean
Successfully installed mongrel-1.0.1
Successfully installed daemons-1.0.7
Successfully installed fastthread-1.0
Successfully installed gem_plugin-0.2.2
Successfully installed cgi_multipart_eof_fix-2.2
Installing ri documentation for mongrel-1.0.1...
Installing ri documentation for daemons-1.0.7...
Installing ri documentation for gem_plugin-0.2.2...
Installing ri documentation for cgi_multipart_eof_fix-2.2...
Installing RDoc documentation for mongrel-1.0.1...
Installing RDoc documentation for daemons-1.0.7...
Installing RDoc documentation for gem_plugin-0.2.2...
Installing RDoc documentation for cgi_multipart_eof_fix-2.2...



Y con esto terminamos la instalación