What are Some Great Posts on Debugging Tough Problems?

Even if you are not running the same technology as someone else, you can gain insight into how they solve hairy problems by reading through their summaries of strange fixes.

Today there was a great post on debugging CSRF problems in Rails. I thought it was interesting and had run into something similar but not nearly as convoluted. It was useful to see the steps that the post author took to figure out what was the root cause of the problem, tracking back to what the change in the Rails code base was that caused him to have invalid assumptions.

Read on →

Rails Raw SQL Insert -- Time Wrong

If the time is incorrect on something that you insert directly into the database when using Rails (off by several hours), try ensuring that you are using the correct modifier to get it into the right time zone. For example, instead of doing DateTime.now, try DateTime.now.utc if you are using UTC as your default timezone.

Converting ERB to Slim

I looked around and there was seemingly no easy way to convert Rails apps to use Slim instead of ERB. There was a gem out there, but it didn’t seem to work for me.

The general process I used was to first convert ERB to Haml using Haml’s haml2html. Next, convert Haml to Slim using haml2slim.

Convert ERB to Haml

Ensure you have Haml installed, preferably using your Gemfile if using Bundler. You can probably remove Haml when you are done with this process.

Read on →

Bundler see what updates are available

The command to see what gems have more recent versions and can be updated is bundle outdated. This will show you all gems that could be upgraded, but unlike bundle update, will not actually update your gems (changing Gemfile.lock and installing new gems.)

It will output something like:

$ bundle outdated          
Updating git://github.com/panozzaj/andand.git
Fetching gem metadata from http://rubygems.org/.......
Fetching gem metadata from http://rubygems.org/..

Outdated gems included in the bundle:
  * ZenTest (4.6.2 > 4.5.0)
  * activesupport (3.1.1 > 3.0.9)
  * builder (3.0.0 > 2.1.2)
  * i18n (0.6.0 > 0.5.0)
  * activemodel (3.1.1 > 3.0.9)
  * erubis (2.7.0 > 2.6.6)
  * rack (1.3.4 > 1.2.4)
  * rack-mount (0.8.3 > 0.6.14)
  * rack-test (0.6.1 > 0.5.7)
  * actionpack (3.1.1 > 3.0.9)
  * mail (2.3.0 > 2.2.19)
  * actionmailer (3.1.1 > 3.0.9)
  * arel (2.2.1 > 2.0.10)
  * activerecord (3.1.1 > 3.0.9)
  * activeresource (3.1.1 > 3.0.9)
  * devise (1.4.2 2a5ad46 > 1.4.2 e76ba05)
  * railties (3.1.1 > 3.0.9)
  * rails (3.1.1 > 3.0.9)
  * sequel (3.28.0 > 3.20.0)
  * sinatra (1.3.1 > 1.0)

To break it down, “sinatra (1.3.1 > 1.0)” means that I have version 1.0 and version 1.3.1 is available.

Read on →