There are about a million ways to do this, thanks to a Moonshine manifest being just a Ruby class with a bunch of methods. One way would be to create a module in lib/ that has one method that makes the appropriate calls:
module MoonshineApacheModules
def apache_modules
a2enmod 'expires'
end
end
Then, in your manifest:
require 'path/to/moonshine_apache_modules.rb'
class ApplicationManifest < Moonshine::Manifest::Rails
...
include MoonshineApacheModules
recipe :apache_modules
end
If you're totally crazy, you could even do some alias_method_chain magic add extra features to the 'apache_server' recipe in apache.rb, since recipes are just methods. :)
However, if you find yourself commonly starting a project with some additions to a moonshine manifest, the best practice is probably creating a moonshine plugin with those customizations:
Here are a couple sample plugins:
Now that I think about things, the 'expires' module is pretty commonly used in the deployment of Rails apps, and I wouldn't mind adding that to the default stack. Pull request? ;)
Let me know if you have questions about any of this!