Photo
Photo

A Rust Heroku Buildpack

I'm happy to introduce the first stable version of my Rust Heroku Buildpack!

Just looking to get your hands dirty? Look here.

The project was a really interesting learning experience about how Heroku does things, on bash scripting, and about multirust, which I'd not used before but now am quite a fan of! (I previously just rustup'd the newest nightly every few days.)

Features

It's unit tested using Heroku's official testrunner every commit (using homu) and includes a Makefile which executes a docker based test locally.

Development Story

I am a huge fan of Heroku, they're were I hosted my first web app, they are where Gathering Our Voices hosted our website for two years, and I have several friends who work there. While I was in San Fransisco for our raft-rs meetup they even invited me to come visit and meet some of their team.

There was, however, one sore point with Heroku for me: There were no Rust buildpacks I was happy with! There was emk's and chrisumbel's but I wasn't particularly happy with either. There wasn't a ton of flexibility with them and they were both only manually tested with vagrant VMs. The last update to either was in March, which was still around the time when Rust was rapidly changing and maturing. (Though, it still is, but more conservatively!)

Originally my plan had been to issue a PR to one of them, but by the time I started digging into how things worked I realized I wanted to make my own buildpack. So I did. At first I used rustup and tried to handle detecting when to update myself, but eventually realized multirust was a more straightforward way to go.

I made the mistake of starting it right before both exams and the holidays, so things went slower than I anticipated. Along the way I got to learn several neat lessons which I've shared below. I'm looking forward to playing more with Rust on Heroku and would some day like to see raft-rs based applications on their infrastructure.

A special thanks to my friends at Heroku, Peter and Joe, for helping me work out a few kinks and showing me the test-runner (which showed me the cedar docker images as well!)

Lessons Learned

6c3fee57ca834cb9f133106444ebe3bf12a9628e