Run a remote ruby script locally.

If you ever want to try a ruby script without downloading it you can do it like this:

ruby -e "$(curl -fsSL https://raw.github.com/gist/3862719/bb2a7a18f3dc4d95cfa77d637317e296a114eak1/some_script.rb)"

I know this is not rocket science but i want to have this line handy.

 

Paperclip content type validation always fails on Internet Explorer

I just ran into a strange problem. It turns out that when you try to upload a file using paperclip on IE, the content-type is different from other browsers and you have to take of them if you want to use paperclip’s validates_attachment_content_type method.

I needed to add to my model validation the following content-types: “image/pjpeg” and “image/x-png”. I did not have a problem with gifs.

validates_attachment_content_type :logo, :content_type => ['image/jpeg', 'image/jpg', 'image/gif', 'image/png', 'image/pjpeg', 'image/x-png']

 

Disruptive Innovation

Because companies tend to innovate faster than their customers’ lives change, most organizations eventually end up producing products or services that are too good, too expensive, and too inconvenient for many customers.

By only pursuing “sustaining innovations” that perpetuate what has historically helped them succeed, companies unwittingly open the door to “disruptive innovations”.

Disruptive Innovation

 

Rails: perdiendo la cabeza con before_save

Recientemente encontré un ‘bug’ en una aplicación que estoy desarrollando, tiene que ver con los callbacks de Rails, en específico before_save.

Por fín lo he resuelto, no de la manera que esperaba, tal vez por berrinchudo ya que aún me queda una duda, pero al fin puedo continuar desarrollando y un peso se ha ido de mí.

La parte afectada de la aplicación involucra 2 modelos, digamos:

class Category
  has_many :products
end
 
class Products
  belongs_to :category
end
 
app/models/category.rb
before_save
  return unless self.published
  self.products.first.amount = (algun calculo dinámico)
end

Justo en este callback es donde está lo misterioso, la cantidad(amount) del primer producto nunca cambiaba amenos que actualizara la categoría, la publicara y la grabara 2 veces!! a la 2a vez el cálculo se realizaba, esto me quitó el sueño y me hizo perder gran cantidad de tiempo analizando el problema.

por qué a la 2a vez si pasaba?

Corrí la aplicación con el debugger y pues Rails sí pasaba por esa parte del código pero la cantidad del producto quedaba intacta, incluso intente cosas como estas:

app/models/category.rb
before_save
  return unless self.published
  self.products.first.amount = (algun calculo dinámico)
  self.name = 'Algún nombre'
end

Y pues la primera vez que grababa, ya con el atributo de published en true, name sí se actualizaba pero amount no! sólo hasta la segunda… hasta la fecha no entiendo por que sucede esto, no he logrado llegar a una conclusión, lo que sí es que por lo pronto ya encontré una solución:

app/models/category.rb
before_save
  return unless self.published
  self.products.first.update_attribute(:amount, (algun calculo dinámico))
end

De esta manera el cálculo ocurre todas y cada una de las veces que la categoría es actualizada.

 

Git: Ahorra un poco de tiempo utilizando alias

Puedes recuperar un poco de tiempo en las tareas cotidianas de git si creas alias para los comandos más comunes.

Git soporta alias así que lo unico que tienes que hacer es agregar unas líneas a tu ~/.gitconfig, les dejo el mío:

[alias]
  st = status
  ci = commit
  br = branch
  co = checkout
  df = diff
  lg = log -p
  rb = rebase

Y voilà:

$git co master
Switched to branch "master"