This application can be used to serve Dragonfly urls.
- Doesn't support the full Dragonfly feature set (for now).
- Limited to Imagemagick.
IMPORTANT: Due to a known bug in Erlang 17.3, fetching urls with an https
scheme are not processed correctly and throw an exception.
Please use Erlang >= 17.4, available at https://www.erlang-solutions.com/downloads/download-erlang-otp.
To install elixir on a Mac, brew install elixir
(you may need to brew update
first).
Alternatively, you can follow these instructions.
To install Imagemagick with png support, run brew install jpeg libpng imagemagick
.
Communication with Imagemagick is managed by Goon, a middleman needed to polyfill the incomplete Port implementation provided by Erlang (see here for more information).
Download the binary and add it to a directory available in your $PATH
.
$ mix deps.get
This will install all needed packages.
Then, copy the example environment file and make the necessary adjustments.
$ cp .env.example .env
$ iex -S mix
Starts the app and opens a console.
$ mix test
Images are served at the entry point defined in config.exs
, set as default at /media/:payload/:filename
.
Note that both params in the url scheme are needed by the application.
The app exposes an admin api that can be used to programmatically expire an image and all its associated resources. Endpoints are:
- GET image (shows steps necessary to generate image)
- DELETE image (expires all caches involved in the generation of the image)
Given an image url in the form of:
http:https://example.com/media/12345/untitled.jpg
It can be deleted by sending a DELETE
request to the following endpoint:
http:https://example.com/admin/media/12345/untitled.jpg
From the command line:
$ curl -XDELETE http:https://example.com/admin/media/12345/untitled.jpg
The expected response is a 202
, which indicates that the cache expiry has been scheduled and will be performed asyncronously.
The steps necessary to generate the image can also be examined at:
http:https://example.com/admin/media/12345/untitled.jpg
From the command line:
$ curl http:https://example.com/admin/media/12345
The app runs only on Cedar-14 and requires the multi-buildpack as it uses a custom Elixir buildback (it includes Goon).
Buildpacks are defined in .buildpacks
.
Please follow instructions at https://github.com/ddollar/heroku-buildpack-multi.