All of these solutions imply using a 3rd party link shortening service. Why using a 3rd party when the discourse app itself could have been used? This could be: yourdomain.com/t/foo123, where foo123 is the string id of the topic. I know this is not super shor like goo.gl, but it is much shorter than the title version.
This requires non-auto-incremental-integer ids for topics. Unlike mysql, postgres is not inefficient when it comes to non integer primary keys. But, rails was written to solve a specific problem: to work with mysql and integer primary keys. And whenever your problem gets deviated from the problem that rails was written to solve, all the magic of rails is replaced with a pile of pain.
Reddit, which is build on postgres, uses random string ids for looking up links. It would be nice to have the same url pattern for discourse.
Another downside of integer ids is that, it exposes some information about your app: I know exactly how many entities your app has.