<div align="center">
# `ping`
Easily ping (wake) an idle Heroku App from slumber.
[](https://travis-ci.org/dwyl/ping)
[](http://codecov.io/github/dwyl/ping?branch=master)
[](https://github.com/dwyl/ping/issues)
[](https://github.com/dwyl/ping)
</div>
## Why?
We have _several_ demo/example/tutorial Apps deployed to Heroku.
Apps on the "free" tier go to sleep after **30 minutes** of inactivity.
see: https://devcenter.heroku.com/articles/free-dyno-hours
In order to wake them,
we wrote a few lines of code that can be added to any
Elixir/Phoenix App and invoked as an image
in the `README.md` of the project that links to the App.
We had implemented the "wake from sleep" endpoint
several times in our Heroku Apps,
most recently in our
[`email`](https://github.com/dwyl/email/blob/b4c2c4f4d96773c326cf3fa8cd4838973c9a78f5/lib/app_web/controllers/sent_controller.ex#L113-L170)
app.
After copy-pasting the code a couple of times,
we decided to make it a DRY reusable package
that we can use in our _next_ app(s)!
## What?
An easy way for us to wake our Heroku demo apps.
> Note: our use case for this module is "just in time" waking of Heroku dynos. <br />
If you need your "Free" Heroku app to be _always_ awake
or awake during specific times of day,
consider _combining_ the `ping` package with a CRON job.
You can use a _free_ service such as: https://cron-job.org
as described by [Mahdhi Rezvi](https://github.com/Mahdhir) in:
https://medium.com/better-programming/keeping-my-heroku-app-alive-b19f3a8c3a82
## Who?
This package is for anyone building
an Elixir/Phoenix app deployed to Heroku.
# How?
## 1. Installation
Install by adding `ping` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:ping, "~> 1.0.0"}
]
end
```
## 2. Create a `get /ping` Route in your `router.ex`
## 3. Create the `ping/2` Function in your Controller
You can either create a brand new controller,
or use an existing one if you prefer.
## 4. Add a GIF to the `README.md` of the Heroku App
Documentation available at
[https://hexdocs.pm/ping](https://hexdocs.pm/ping).
But there's really not much to it.