New week new bug to hunt down! A day after our last deployment at work, a new type of error started rising like a great wave. Random SQL update queries started failing at random with the following error:
ActiveRecord::StatementInvalid: Mysql2::Error: Lock wait timeout exceeded; try restarting transaction: UPDATE users SET ...
I collected the experience and the lessons I learned during the process of upgrading Rails from 3.2 to 4.2 along with some undocumented changes and solutions for them.
After upgrading Rails 3.2 to 4.0 we had a new type of errors:

ActiveRecord::StatementInvalid: Mysql2::Error: Data too long for column 'target_column'...

It turned out we had to truncate DB fields based on byte size rather than the character length before saving them to the DB
The second part of a debugging journey where I hunt down a weird error. This part deals with the mysterious HTTP::Net EOFError, introduces how to improve logging and to log HTTP requests.
In this tutorial we build a tool that sends a notification if a marked method gets invoked. This helps us to double-check if the method in question is indeed unused before removing it.