Typical File Paths

Here we’ll describe some typical locations and filenames for config.

App-Wide

Every app will need at least one config file. The convention is to name this file rattail.conf and place it directly in your app dir, e.g. /srv/envs/poser/app/rattail.conf

Many apps will benefit from having multiple config files, primarily for the sake of organization and “separation of concerns”. A robust app with several features then might have the following, all in its app dir:

rattail.conf is considered the “core” config file for the app, which means that no matter how you run the app, this file should be (in)directly referenced somehow, so that it affects the runtime behavior.

quiet.conf is meant to be used for ad-hoc app commands which you run from the console. It is a thin wrapper around rattail.conf and merely tries to cut down on some of the output (logging) “noise” from commands.

cron.conf is also a thin wrapper, which cuts down on command output “noise” and uses a custom logging file.

web.conf is meant to be used by the standard web app only; it defines the config needed to run the web app and uses a custom logging file.

webapi.conf is meant to be used by the web API only; it defines the config needed to run the web API and uses a custom logging file.

datasync.conf is meant to be used only by the datasync commands; it defines the config needed to run datasync and uses a custom logging file.

filemon.conf is meant to be used only by the filemon commands; it defines the config needed to run filemon and uses a custom logging file.

bouncer.conf is meant to be used only by the bouncer commands; it defines the config needed to run bouncer and uses a custom logging file.

mailmon.conf is meant to be used only by the mailmon commands; it defines the config needed to run mailmon and uses a custom logging file.

Machine-Wide

If you have several apps running on a given machine, you may wish to share some “common” config among all the apps. If so you can make a “machine-wide” config file to store that common config.

The convention here is to place the file at /etc/rattail/rattail.conf although you could do whatever you like.

Site-Wide

This is similar to the machine-wide scenario, but if you have multiple machines which run apps, you may wish to share the common config in such a way that all machines could access it. We call this a “site-wide” config file.

How exactly you go about making this file available is beyond our scope here, but a hint is to use Samba/CIFS. True location of the file would be anywhere you like, on whichever machine you elected to be the provider of this common config.