Packages

Simple and reliable background job processing library for Elixir. Has persistence, retries, delayed jobs, concurrency limiting, error handling and is heroku friendly.

Current section

Files

Jump to
toniq lib toniq redis_connection.ex
Raw

lib/toniq/redis_connection.ex

defmodule Toniq.RedisConnection do
use GenServer
def start_link do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def init(state) do
Process.flag(:trap_exit, true)
redis_url
|> Exredis.start_using_connection_string
|> register_redis
Process.flag(:trap_exit, false)
{:ok, state}
end
defp register_redis({:connection_error, error}) do
raise """
\n
----------------------------------------------------
Could not connect to redis.
The error was: "#{inspect(error)}"
Some things you could check:
* Is the redis server running?
* Did you set Mix.Config in your app?
Example:
config :toniq, redis_url: "redis://localhost:6379/0"
* Is the current redis_url (#{redis_url}) correct?
----------------------------------------------------
"""
end
defp register_redis(pid) do
pid
|> Process.register(:toniq_redis)
end
defp redis_url do
redis_url_provider = Application.get_env(:toniq, :redis_url_provider)
if redis_url_provider do
redis_url_provider.()
else
Application.get_env(:toniq, :redis_url)
end
end
end