Por defecto attachment_fu (y su predecesor acts_as_attachment), no escalan las imagenes proporcionalmente al pasarles el parámetro :resize_to, sino que simplemente cambian el ancho y alto a los valores del parámetro.
En attachment_fu, para que escale es tan simple como usar un 'geometry string'. En este test se pueden ver varios ejemplos de escalado
http://github.com/technoweenie/attachment_fu/tree/master/test/geometry_test.rb
así que si queremos tener un tamaño máximo de 200 x 200 pondremos
has_attachment :resize_to => "200x200>"
En el caso de acts_as_attachment, no tenemos esa posibilidad, pero el cambio para que escale es muy simple. En el fichero
vendor/plugins/acts_as_attachment/lib/technoweenie/acts_as_attachment/instance_methods.rb
Dentro del método attachment_data cambiamos
thumbnail_for_image(img, attachment_options[:resize_to])
por
size = attachment_options[:resize_to]
if size.is_a?(Array)
size_ratio = size[0].to_f / size[1].to_f
ratio = img.columns.to_f / img.rows.to_f rescue 0
large_width = (ratio > size_ratio or ratio == 0) ? size[0] : size[1]*ratio
large_height = (ratio < size_ratio or ratio == 0) ? size[1] : size[0]/ratio
size = [large_width, large_height]
end
thumbnail_for_image(img, size)
Y ya escala proporcionalmente. Este trozo de código podría ser más elegante, tal y como esta hecho en
http://github.com/technoweenie/attachment_fu/tree/master/lib/geometry.rb
Pero bueno, ese código lo tengo hecho hace tiempo y funciona :-)
miércoles, 6 de agosto de 2008
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:
Y efectivamente, despues de instalar RedHill on Rails Core ya funciona.... que penita....
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....
Etiquetas:
foreign key migrations,
redhill,
tabledefinition
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:
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.
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
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
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
viernes, 27 de junio de 2008
Error 501 Syntactically invalid HELO argument(s) en envío de mails
Enviando una newsletter me he encontrado con que un servidor rechazaba los mails con el mensaje de error:
Error 501 Syntactically invalid HELO argument(s) en envío de mails
Investigando un poco parece ser que el problema es que el nombre de servidor que tenía definido en /etc/hosts tenía un _ y tal y como cuentan aquí no cumple el estandar RFC2821
To promote interoperability and consistent with long-standing
guidance about conservative use of the DNS in naming and applications
(e.g., see section 2.3.1 of the base DNS document, RFC1035 [22]),
characters outside the set of alphas, digits, and hyphen MUST NOT
appear in domain name labels for SMTP clients or servers. In
particular, the underscore character is not permitted. SMTP servers
that receive a command in which invalid character codes have been
employed, and for which there are no other reasons for rejection,
MUST reject that command with a 501 response.
Lo curioso es que practicamente ningún servidor hace esa comprobación, ya que sólo me ha pasado con un dominio.
Y para acabar una demostración del problema:
telnet mailin.blueyonder.co.uk 25
Trying 195.188.53.99...
Connected to mailin.blueyonder.co.uk.
Escape character is '^]'.
220 exim9.blueyonder.co.uk ESMTP Exim 4.68 Tue, 17 Jun 2008 07:54:52 +0100
helo prueba_1
501 Syntactically invalid HELO argument(s)
8 Tue, 17 Jun 2008 07:46:24 +0100
helo prueba
250 exim13.blueyonder.co.uk Hello prueba
Error 501 Syntactically invalid HELO argument(s) en envío de mails
Investigando un poco parece ser que el problema es que el nombre de servidor que tenía definido en /etc/hosts tenía un _ y tal y como cuentan aquí no cumple el estandar RFC2821
To promote interoperability and consistent with long-standing
guidance about conservative use of the DNS in naming and applications
(e.g., see section 2.3.1 of the base DNS document, RFC1035 [22]),
characters outside the set of alphas, digits, and hyphen MUST NOT
appear in domain name labels for SMTP clients or servers. In
particular, the underscore character is not permitted. SMTP servers
that receive a command in which invalid character codes have been
employed, and for which there are no other reasons for rejection,
MUST reject that command with a 501 response.
Lo curioso es que practicamente ningún servidor hace esa comprobación, ya que sólo me ha pasado con un dominio.
Y para acabar una demostración del problema:
telnet mailin.blueyonder.co.uk 25
Trying 195.188.53.99...
Connected to mailin.blueyonder.co.uk.
Escape character is '^]'.
220 exim9.blueyonder.co.uk ESMTP Exim 4.68 Tue, 17 Jun 2008 07:54:52 +0100
helo prueba_1
501 Syntactically invalid HELO argument(s)
8 Tue, 17 Jun 2008 07:46:24 +0100
helo prueba
250 exim13.blueyonder.co.uk Hello prueba
Suscribirse a:
Entradas (Atom)