Islo - Self-contained apps

Make apps completely self-contained by abstracting service process settings and execution.

Quick, show me how to use my favorite daemon!

First, install Islo:

$ gem install islo

Then, a nice example might be worth a thousand words, so here goes:

MySQL or MariaDB

$ islo mysql_install_db  # creates database in db/mysql
$ islo mysqld            # starts server without daemonizing[^1]
$ islo mysql             # connects to running server via unix socket in tmp/sockets

Redis

$ islo redis-init        # creates directory in db/redis
$ islo redis-server      # starts server without daemonizing[^1]
$ islo redis-cli         # connects to server via unix socket in tmp/sockets

PostgreSQL

$ islo initdb            # creates directory in db/postgres
$ islo postgres          # starts server without daemonizing[^1]
$ islo psql              # connects to server via unix socket in tmp/sockets

[^1]: Best used in a Procfile

What's more to know?

  • Additional arguments are passed to the command.

Run islo --help for details.

  • Servers will listen only on unix sockets, TCP will be disabled.

This saves headaches when you have to handle multiple projects, and thus conflicting ports. Also, it's too easy to forget not to listen for the world.

My service is installed in a non-standard location/I want to use different versions in different projects

Configuration is a pending item, which will make locations selectable.

I don't like how it assumes a Rails project layout

Configuration is a pending item, which will help set relevant paths.

I've got a super service you don't seem to know about

Some configuration may help you soon. Also, contributions are welcome.

I can't be bothered/always forget to type islo before my commands every single time!

Look soon enough under support for a few optional helpers for your favorite shell.

I want to contribute. How?

Great! Write specs, have them all pass, respect rubocop, rebase on master and make your PR.

License

MIT, see LICENSE.