Publishable
Publishable provides a thin layer over SFTP so that a list of items can be
published to a remote server.
It contains a Site
module and a File
module, along with a specification for
an ItemInterface
if not working with the file system. These can be mixed into
classes that expose the correct interface to make them easy to #publish
.
See example/publish
for a basic implementation.
Explain...
A Site
must implement:
#each(&block)
, that enumerates objects conforming to ItemInterface
.
And ItemInterface
says you must implement:
#contents
, that returns the contents to be written;
#digest
, a hash to determine whether the item has changed;
#url
, the url that the item lives at.
There is also the File
module which has default implementations of
ItemInterface
for a file on the file system, it requires that the method
#path
is defined to return the path to the file.
The class that includes Site
has a #publish(store, config)
method defined on
it, where:
store
is the path to a local cache for digests;
config
is a hash containing:
host
, the host to publish to;
base
, the base path to write to;
user
, the username to use;
pass
, the password to use, if omitted you will be prompted.