miércoles, 30 de julio de 2008

foreign key migrations

Hoy acabo de darme cuenta por n-esima vez, y no escarmiento, de que a veces es importante leer antes de ponerse a hacer las cosas.

Me he instalado el plugin Foreign Key Migrations y me daba este error en el db:migrate

rake aborted!
undefined method 'name' for #
C:/projects/f2f/community/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb:16:in 'column'
C:/projects/f2f/community/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb:11:in 'primary_key'
C:/projects/f2f/community/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb:96:in 'create_table'


Al principio he pensado que era culpa de que era cosa de que lo he instalado en Rails 2.1.0 y después de perder un buen rato depurando y buscando donde estaba definido el metodo name de TableDefinition, la solución era tan simple como leerse la página del plugin:

Dependencies

  • RedHill on Rails Core (redhillonrails_core).

Y efectivamente, despues de instalar RedHill on Rails Core ya funciona.... que penita....

viernes, 18 de julio de 2008

Exportar a excel desde ruby

Normalmente, la exportación a Excel la resuelvo simplemente creando un fichero csv con FasterCSV

csv_string = FasterCSV.generate do |csv|
# Aquí la generación del csv
end
send_data csv_string, :filename => 'nombre.xls'


Pero me he encontrado en una aplicación que el cliente pide directamente un Excel para evitar la pantalla de importar CSV. He encontrado estas alternativas:

  • Librerias Win32OLE, pero esta opción no me vale ya que el servidor es Linux
  • La gema Spreadsheet-Excel , que genera formato Excel 95
  • Generar una tabla HTML y ponerle las cabeceras de excel
  • Generar un XML para Excel 2003 tal y como cuentan en la wiki de rubyonrails
Al final la solución que he elegido es la última, practicamente ha sido un copy-paste del ejemplo añadiéndole un nuevo estilo en negrita:

xml.Style 'ss:ID' => 'Header' do
xml.Font 'ss:Bold' => '1'
end

Y aplicar ese estilo a las celdas de la cabecera

xml.Cell 'ss:StyleID'=>'Header' do


El único problema que me he encontrado es que OpenOffice no reconoce un .xls en formato XML, así que para abrirlo con Calc, hay que renombrarlo a .xml. Con Office se abre sin problemas.

martes, 8 de julio de 2008

Tag Cloud Widget

No me gusta nada como se muestran por defecto los tags, simplemente en un listado, me gustá más la opción de mostrar un Tag Cloud

Y en Compender he encontrado la solución que ya he puesto en este blog :-)

http://www.compender.com/2007/12/simple-tag-cloud.html