Packages
maru
0.12.2
0.14.0-pre.1
0.13.2
0.13.1
0.13.0
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
REST-like API micro-framework for elixir inspired by grape.
Current section
Files
Jump to
Current section
Files
lib/maru.ex
require Logger
defmodule Maru do
@moduledoc """
This is documentation for maru.
Maru is a REST-like API micro-framework depends on [plug](http://hexdocs.pm/plug) for [elixir](http://elixir-lang.org) inspired by [grape](https://github.com/ruby-grape/grape).
"""
use Application
@doc """
Maru version.
"""
@version Mix.Project.config[:version]
def version do
@version
end
@doc false
def start(_type, _args) do
Maru.Supervisor.start_link
end
@doc false
def servers do
Enum.filter(Application.get_all_env(:maru), fn {module, _} ->
cond do
not match?("Elixir." <> _, to_string(module)) -> false
not Code.ensure_loaded?(module) ->
Logger.info "Maru router `#{module}` defined in config but not loaded, ignore..."
false
not {:call, 2} in module.__info__(:functions) ->
Logger.info "your module `#{module}` defined in config is not a maru router, ignore..."
false
true -> true
end
end)
end
@doc false
@mix_env Mix.env
def test_mode? do
case Application.get_env(:maru, :test) do
true -> true
false -> false
nil -> @mix_env == :test
end
end
end