GMail IMAP in Mail.app Slow?

GMail IMAP downloading at 1.1 KB/s

I never download anything in Safari this slow. It’s easily hundreds of times faster. It’s been well over a month since I setup my GMail IMAP. I’ve done some initial investigation, but nothing concrete showed up that I hadn’t tried. Any ideas?

Rails Page Caching + Mongrel

So you’ve got a great Rails app. You’re setting up page caching for those publicly accessible pages shared by everyone. One of your pages is the :index. It seems like the caching isn’t working when you’re testing it, but the output constantly says:

Cached page: /tag.html (0.00044)

What gives? Try seeing if “/tag” seems to use the cache, but “/tag/” doesn’t.

The mechanism behind the Rails page caching takes your action output and stuffs it all into an HTML file that can easily be found by the web server. Ah! So there’s no voodoo in Rails itself that tries to check for that page. In fact, it’s banking on not being called by pushing that burden off to the web server. In our case, this is Mongrel.

So how does Mongrel decide? Well, the mongrel_rails fires up a RailsHandler which uses the PATH_INFO to check for the existence of a cached file. When you’re requesting “/tag/” it’s looking for tag/.html, but not finding it.

I put together a patch here to address it. Seems to work in my limited testing, but I don’t know what I may have broken. Yeah, usually I make sure to write a test for my patches. This time I didn’t. Perhaps it won’t make it in until I do, but at least I’ve got it written down here to remind me when my cache doesn’t seem to work quite right.

Macports Erlang Install

So I ran into a funny error today while trying to install erlang on my Mac.

Zdot-MBP:~ tim$ sudo port install erlang
Error: Unable to execute port: invalid command name “configure.cppflags”

It turns out (after running port using the -d option), that macports was trying to upgrade my gettext version. The Portfile seemed to be trying to set the CPPFLAGS option for the configure tool. I opened up /opt/local/var/db/dports/sources/ rsync.rsync.darwinports.org_dpupdate_dports/devel/gettext/Portfile and replaced:

configure.cppflags \
    -no-cpp-precomp

with this:

configure.env   CPPFLAGS=-no-cpp-precomp

That seemed to have fixed things. I was able to continue my install and fire up erl. Since I couldn’t find the answer on the big Google-Net I cast, I figured I’d write it up here in case some poor soul had the same bad luck I did.

Now it’s time to try out some Amazon API stuff.