Archive of articles classified as' "Programming"

Back home

Run a remote ruby script locally.

25/11/2012

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.

No Comments

rake routes filtered by controller

23/09/2011

rake routes CONTROLLER=controller_name

No Comments

Paperclip content type validation always fails on Internet Explorer

23/09/2011

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']

1 Comment

Rails 3.1: CoffeScript & Asset Pipiline screencasts

7/09/2011

Rails 3.1 – CoffeScript from BostonRB on Vimeo.

Rails 3.1 – The Asset Pipeline from BostonRB on Vimeo.

No Comments

rbx-require-relative requires Ruby version ~> 1.8.7

17/08/2011

If you ever run into this problem when trying to run bundle install using ruby 1.9.2 all you need to do is change in your Gemfile ruby-debug to ruby-debug19.

Answer @ Stackoverflow

2 Comments

Disruptive Innovation

5/07/2010

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

No Comments

Rails: perdiendo la cabeza con before_save

9/12/2009

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.

No Comments

Git: Ahorra un poco de tiempo utilizando alias

1/09/2009

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"

No Comments