Naming is one of hard things in computer science and I TOTALLY AGREE. Not only make a good, descriptive and cool name is hard, but wrong name bring you bad luck.

This is one of my rails story. I have entity (table/model/active record/whatever you called it) named as Suspension. This name not longer good make sense for our scope, so I renamed it to Action and this is what happened.

undefined method `permit' for "create":String

So action is already used as field on rails generated form.

{
  "utf8"=>"✓",
  "authenticity_token"=>"some token",
  "query"=>{"name"=>"asdf"},
  "controller"=>"queries",
  "action"=>"create"
}

Then I renamed it to Callback. Guess what happened? Rails already have Callback class. I do missed java with all its exports in deep of my heart.

undefined method `new' for ActiveSupport::Callbacks::Callback:Class

It’s not so easy rename the scaffold, you must renamed model, controller, view, spec and everything manually. Actually there is some tool called RailsRefactor, but I don’t know how it’s work and feel insecure if something change my code without my knowing.

Check rails reserved word list