Last week, Matt Gemmell released a pretty handy staging script for Jekyll.1 This temporarily removes all your posts from your site and copies a draft into
_posts. This way, building your Jekyll site with your new draft post is way faster than your regular builds with all your content.
Unfortunately, this does not work when you’re using the jekyll-post-link in one of your pages. (Yes, I mean pages, not posts.) The build process for your staged website will fail with an error like this:
Liquid Exception: Could not find post "2015-02-05-foo bar" in tag 'post_link'. Make sure the post exists and the name and date is correct. in baz.md
This morning I talked to Matt about this over on Twitter. He mentioned, that it should be fairly easy to make it work. And he was right. I forked the jekyll-post-link project and made it check if we’re in staging mode before failing on us when a “broken” link appears.
Whenever it finds a post link now, it replaces it with a dummy link. Next time you do the actual build outside of staging mode everything will be back to normal.
Thanks to Matt and Liam for their great plugins!
As of today, it’s also available as a Ruby gem with multi-site support. ↩︎