Category Archives: Ruby on Rails
Fixing fieldWithErrors behavior
Dealing with errors in Rails forms can be a hard task. When a form field has errors, ActionView wraps the input in a div of class “fieldWithErrors”. The result is something like this
<p><div class=”fieldWithErrors”><input id=”user_name” name=”user[name]” type=”text” value=”" /></div></p>
A div inside a paragraph ?¿?¿? This behavoir can be very annoying and isn’t XHTML compliant. A [...]
Define index lengths in your migrations
Defining an index length is a common practice in order to avoid large data indexes, and improve performance. Some time ago, I sent a patch to Rails core, which added the functionality to define index lengths in the migrations. For example:
add_index(:accounts, [:name, :surname], :name => ‘by_name_surname’, :limit => 10)
While I wait a decission from the [...]
How to import data from CSV files in Rails
CSV is commonly used to import data from an external source. You can populate your Rails applications with emails, user names, phone numbers etc. from other applications, databases, excel files…
Let me show you an example.
#users.csv
kevin, kevin@gmail.com
Jhon, jhon@gmail.com
require ‘csv’
CSV.open(’users.csv’, ‘r’).each do |row|
User.create(:username => row[0], :email => row[1])
end
The open method, opens the specified file, [...]
Manejo de excepciones en Rails
Una mala práctica habitual en Rails es no manejar correctamente las excepciones. Algunas excepciones comunes son: ActiveRecord::RecordNotFound, ActionController::RoutingError o ActionController::UnknownAction. Para poder manejar estas excepciones y realizar una acción determinada cuando se produzcan se puede utilizar el método rescue_from. Veamos un ejemplo:
class ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found
private
[...]
Cómo “humanizar” los nombres de atributos en Rails
Desde las últimas versiones de Rails, habréis observado que en los formularios se utilizan símbolos para mostrar el nombre de los atributos, por ejemplo
<%= f.label :title_spanish %>
Esto es perfecto, te ahorra mucho trabajo, pero tiene el problema de que normalmente el nombre de los atributos no es el que realmente queremos mostrar en las vistas [...]
Grup Girona on Rails
Aquest matí fent un cafè amb en Jaime Iniesta hem decidit crear el grup Girona on Rails. La idea és fer reunions per parlar de Rails, Ruby, Git, Shoes, Merb… compartir experiències, aprendre i sobretot passar-ho bé.
De moment hem creat un grup a Google per concentrar la informació rel.lacionada amb el grup, així que si [...]
Autotest con Growl
Creamos un archivo en nuestro directorio de usuario llamado .autotest con el siguiente contenido:
require ‘autotest/redgreen’
require ‘autotest/html_report’
require ‘autotest/menu’
module Autotest::Growl
def self.growl msg, options={}
salida = “growlnotify -n autotest –image \”#{options[:img]}\” -p #{options[:pri]} -d #{rand(100)} -m \”#{msg}\” \”Tests\” #{options[:sticky]}”
system salida
end
Autotest.add_hook :ran_command do |at|
[...]
Optimización: mejorando las consultas MySQL en Rails (I)
Rails es un gran framework, pero la magia y la ágilidad que te proporciona tiene un precio y no es otro que la velocidad y esto se deriva en problemas de escalabilidad. Para una aplicación con poco tráfico o incluso con un tráfico medio la manera de realizar las consultas en Rails nos puede ser [...]
Las 100 aplicaciones Rails con más tráfico
Se ha hablado mucho sobre si Ruby on Rails escala o no, sobretodo han hablado los detractores de Rails, intentando buscar argumentos para desacreditarlo.
Que una aplicación escale es la suma de muchos factores, y el más importante es el humano. No hay ni un solo lenguaje o framework que escale “out of the box”, hay [...]
Recursos anidados (o no) en REST
La filosofía REST permite relacionar los recursos entre ellos de manera que los podamos anidar para que únicamente tengan sentido en un contexto determinado. Supongamos que tenemos un blog multiusuario donde hay “users”, “posts” y “comments”. No tiene demasiado sentido acceder a un comentario directamente con una url del tipo /comments/34, ya que un comentario [...]


