> but I personally have had poor luck getting Grunt to work reliably in practice. > but I personally have had poor luck getting Grunt to work reliably in practice.I'll happily admin that this is user error, but I always have trouble editing Gruntfiles when I start to bring in other packages. Adding an additional task to a Gruntfile is way harder in than Rake, or make, or even Ant for that matter, mainly because you are dealing with hand editing a huge JSON blob.
Tweaking the file to add a different path in or whatever is fine, but there are many times where I wanted to to copy and paste something in to make it work, and I spent as much time fiddling with the format of the js file as I did solving my problem.
A lot of people love grunt, but I'm not one of them.
Anyway I consider your points valid, although I also think you can remove a lot of the boilerplate ( Copy-Paste code ) by introducing some variables to your Grunt build.
I personally use Assemble [1] and I find it pretty decent for generating static content websites.
Good to know there's a good alternative in the ruby world.