PieCrust 1.1
It’s been long overdue, since PieCrust 1.0 was released more than 4 months ago, but at last it’s here: PieCrust 1.1!
Every time I figure I will go with a “release small, release often” kind of philosophy, I still end up with more of a “wait, I’ll just get this last feature ready first” kind of vicious circle… sigh.
Anyway, grab the new release, or keep reading if you want to know about the most important changes. As always, big thanks go to the people who reported bugs and/or helped fix them, or generally participated in the evolution of PieCrust.
Removing deprecated stuff
The first, most important change is that anything that was marked as deprecated, and that usually triggered a warning message if you used it, has been removed. So if you’re still using it, it will just break or, worse, silently do something else.
Make sure you don’t have any of those warnings before you update.
Self updating
If you’re running PieCrust from an installed binary (a .phar
file), you will be able to update it easily with the chef selfupdate
command… well, not this time (you’ll have to re-run the installer), but next time!
By default, the installer gets you the stable
version of PieCrust so if you run the selfupdate
command, it will always get you the latest stable
. But you could also switch to the master
branch (where things are in development) by running chef selfupdate master
. Running selfupdate
(with no argument) from now on would get you the latest master
version until you switch back with chef selfupdate stable
.
I hope this will encourage people to update more often, and to not be afraid to try things out on the master
branch.
Also, it’s probably not working 100% so make sure you report any issues with the self-updater 🙂
Post iterator improvements
The post iterator, the thing you get when you want to loop over pagination.posts
or site.pages
, has a few new tricks:
- Each page object that it returns now has access to the
assets
of that page. This is pretty handy if you want to display thumbnails or something. - The iterator itself now has a few “magic” functions to make simple filtering easier and faster to do. You can use
is_foo(value)
orhas_foo(value)
directly on the iterator to filter pages that have thefoo
setting set tovalue
, or to an array that containsvalue
respecively. This saves you from having to usefilter()
and define a filter in the header.
Temporary caching
You likely have something in your website layout that has to be computed for each page, but ends up being the same all the time during a single bake operation. To speed this up, there’s a new pccache
operator that you can use.
Check out the documentation, with an example where it’s used to only compute a tag cloud in a sidebar once per bake. That example is incidentally from my own blog, and it cut the baking times in half… so yeah, I highly recommend it.
New baking infrastructure
PieCrust is now using a brand new system to keep track of what it’s baking now, compared to what was baked last time. This means that it’s now possible to delete files that we know we created last time, but are not valid anymore:
- A page or asset that was deleted.
- A page that doesn’t generate as many sub-pages as before.
- A whole bunch of files that moved because the
post_url
, or some other URL-generation setting, changed.
Miscellaneous
A few other noteworthy changes:
- The
.md
and.textile
file extensions are now added to theauto_formats
by default, which means any file (page or blog post) with that extension will be treated as Markdown or Textile respecitively. - The concept of “variants”, i.e. different versions of your website’s configuration, are now generalized to the whole of
chef
. See the documentation about it. - There’s no sample website anymore. If you’re feeling nostalgic, however, you can get back that ugly piece of blue as a theme.
That’s it! Grab the new version by re-running the installer, or getting the new source code from Github or BitBucket (where you can also report any issues).