Merge pull request #73 from poanetwork/ferigis.64.fix_mnesia_release
Ferigis.64.fix mnesia release
This commit is contained in:
commit
1c7f79d7c1
34
README.md
34
README.md
|
@ -110,15 +110,39 @@ mix dialyzer
|
|||
|
||||
To build an executable you'll need Elixir 1.6 (and Erlang/OTP 20).
|
||||
|
||||
1. Once you have a copy of this repository configure the backend for production in the file `config/prod.exs`.
|
||||
2. An example configuration can be found in the current `config/prod.exs`.
|
||||
3. Do a `mix deps.get` to fetch, among other dependencies, the tooling for building server executables.
|
||||
4. A `env MIX_ENV=prod mix release --name=poa_backend --env=prod` will assemble an executable.
|
||||
1. Start a clean Terminal
|
||||
2. Once you have a copy of this repository configure the backend for production in the file `config/prod.exs`.
|
||||
3. An example configuration can be found in the current `config/prod.exs`.
|
||||
4. Do a `mix deps.get` to fetch, among other dependencies, the tooling for building server executables.
|
||||
5. We have to export the `MNESIA_HOST` variable in order to tell in which node we are going to create the mnesia schema
|
||||
|
||||
```
|
||||
export MNESIA_HOST=poa_backend@127.0.0.1
|
||||
```
|
||||
|
||||
5. A `env MIX_ENV=prod mix release --name=poa_backend --env=prod` will assemble an executable.
|
||||
|
||||
A resulting artifact resides at `_build/prod/rel/poa_backend/releases/0.1.0/poa_backend.tar.gz` which you can move to a remote host.
|
||||
Use `tar xfz` then `bin/poa_agent start` (`bin/poa_agent stop` will stop the server cleanly).
|
||||
Use `tar xfz` then `bin/poa_backend start` (`bin/poa_backend stop` will stop the server cleanly).
|
||||
|
||||
If you want to run it on the local host then the procedure is as simple as: `_build/prod/rel/poa_backend/bin/poa_backend`.
|
||||
|
||||
6. Set up Mnesia. After start the `POABackend` we have to set up mnesia. First we have to check if the Mnesia directory exists (probably not). In our case we have set it to `priv/data/mnesia`
|
||||
|
||||
```
|
||||
config :mnesia,
|
||||
dir: 'priv/data/mnesia' # make sure this directory exists!
|
||||
```
|
||||
|
||||
so we have to create that folder inside the release folder.
|
||||
|
||||
After that we have to create and migrate the database. In order to do that we have make a `RPC` to the running node, this command is run only once (_Note that the node must be running, that means we have executed `bin/poa_backend start`_):
|
||||
|
||||
```
|
||||
bin/poa_backend rpc Elixir.POABackend.Release.Tasks migrate
|
||||
```
|
||||
|
||||
That will create the Mnesia Database. After those steps the app is ready to be used
|
||||
|
||||
**Note:** executables must be built on the platform (OS and architecture) they are destined for under the project's current configuration.
|
||||
Other options are possible (see `https://hexdocs.pm/distillery/getting-started.html`).
|
|
@ -17,7 +17,7 @@ config :poa_backend,
|
|||
config :poa_backend, POABackend.Auth.Repo,
|
||||
priv: "priv/auth",
|
||||
adapter: EctoMnesia.Adapter,
|
||||
host: Kernel.node(),
|
||||
host: {:system, :atom, "MNESIA_HOST", Kernel.node()},
|
||||
storage_type: :disc_copies # this will store the data on disk and memory
|
||||
|
||||
config :mnesia,
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
"lib/poa_backend/receiver.ex",
|
||||
"lib/poa_backend/protocol.ex",
|
||||
"lib/poa_backend/protocol/data_type.ex",
|
||||
"lib/poa_backend/protocol/message_type.ex"
|
||||
"lib/poa_backend/protocol/message_type.ex",
|
||||
"lib/poa_backend/release"
|
||||
]
|
||||
}
|
|
@ -4,13 +4,14 @@ fonts/icomoon.eot
|
|||
fonts/icomoon.svg
|
||||
fonts/icomoon.ttf
|
||||
fonts/icomoon.woff
|
||||
dist/sidebar_items-f62ce50de1.js
|
||||
dist/sidebar_items-3a7a458c10.js
|
||||
api-reference.html
|
||||
initial_architecture.html
|
||||
search.html
|
||||
404.html
|
||||
POABackend.html
|
||||
POABackend.Receivers.Repo.html
|
||||
POABackend.Release.Tasks.html
|
||||
POABackend.Auth.html
|
||||
POABackend.Auth.Guardian.Plug.html
|
||||
POABackend.Auth.Models.Token.html
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>404 – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Auth.Guardian.Plug – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Auth.Models.Token – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Auth.Models.User – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Auth.REST – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Auth – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.CustomHandler.REST – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.CustomHandler – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Protocol.DataType – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Protocol.Message – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Protocol.MessageType – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Protocol – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Receiver – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Receivers.Dashboard – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Receivers.DynamoDB – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Receivers.Eth.Stats – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Receivers.Repo – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend.Receivers.System.Stats – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,182 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="ExDoc v0.18.4">
|
||||
<title>POABackend.Release.Tasks – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body data-type="modules">
|
||||
<script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script>
|
||||
|
||||
<div class="main">
|
||||
<button class="sidebar-button sidebar-toggle">
|
||||
<span class="icon-menu" aria-hidden="true"></span>
|
||||
<span class="sr-only">Toggle Sidebar</span>
|
||||
</button>
|
||||
<button class="sidebar-button night-mode-toggle">
|
||||
<span class="icon-theme" aria-hidden="true"></span>
|
||||
<span class="sr-only">Toggle Theme</span>
|
||||
</button>
|
||||
<section class="sidebar">
|
||||
|
||||
|
||||
<a href="POABackend.html" class="sidebar-projectLink">
|
||||
<div class="sidebar-projectDetails">
|
||||
<h1 class="sidebar-projectName">
|
||||
poa_backend
|
||||
</h1>
|
||||
<h2 class="sidebar-projectVersion">
|
||||
v0.1.0
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
</a>
|
||||
|
||||
<form class="sidebar-search" action="search.html">
|
||||
<button type="submit" class="search-button">
|
||||
<span class="icon-search" aria-hidden="true"></span>
|
||||
</button>
|
||||
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" />
|
||||
</form>
|
||||
|
||||
<ul class="sidebar-listNav">
|
||||
<li><a id="extras-list" href="#full-list">Pages</a></li>
|
||||
|
||||
|
||||
<li><a id="modules-list" href="#full-list">Modules</a></li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
<div class="gradient"></div>
|
||||
<ul id="full-list" class="sidebar-fullList"></ul>
|
||||
</section>
|
||||
|
||||
<section class="content">
|
||||
<div class="content-outer">
|
||||
<div id="content" class="content-inner">
|
||||
|
||||
|
||||
<h1>
|
||||
<small class="visible-xs">poa_backend v0.1.0</small>
|
||||
POABackend.Release.Tasks
|
||||
|
||||
<a href="https://github.com/poanetwork/poa-netstats-wharehouse/blob/v0.1.0/lib/poa_backend/release/tasks.ex#L1" title="View Source" class="view-source" rel="help">
|
||||
<span class="icon-code" aria-hidden="true"></span>
|
||||
<span class="sr-only">View Source</span>
|
||||
</a>
|
||||
|
||||
</h1>
|
||||
|
||||
|
||||
<section id="moduledoc">
|
||||
<p>This module is needed when we create a release. We are using Mnesia locally so when we start create a release
|
||||
we have to create the Mnesia files there. In order to do that we have to run this <a href="#migrate/0"><code class="inline">migrate/0</code></a> function.</p>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section id="summary" class="details-list">
|
||||
<h1 class="section-heading">
|
||||
<a class="hover-link" href="#summary">
|
||||
<span class="icon-link" aria-hidden="true"></span>
|
||||
<span class="sr-only">Link to this section</span>
|
||||
</a>
|
||||
Summary
|
||||
</h1>
|
||||
|
||||
|
||||
|
||||
<div class="summary-functions summary">
|
||||
<h2>
|
||||
<a href="#functions">Functions</a>
|
||||
</h2>
|
||||
<div class="summary-row">
|
||||
<div class="summary-signature">
|
||||
<a href="#migrate/0">migrate()</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section id="functions" class="details-list">
|
||||
<h1 class="section-heading">
|
||||
<a class="hover-link" href="#functions">
|
||||
<span class="icon-link" aria-hidden="true"></span>
|
||||
<span class="sr-only">Link to this section</span>
|
||||
</a>
|
||||
Functions
|
||||
</h1>
|
||||
<div class="detail" id="migrate/0">
|
||||
|
||||
|
||||
<div class="detail-header">
|
||||
<a href="#migrate/0" class="detail-link" title="Link to this function">
|
||||
<span class="icon-link" aria-hidden="true"></span>
|
||||
<span class="sr-only">Link to this function</span>
|
||||
</a>
|
||||
<span class="signature">migrate()</span>
|
||||
|
||||
<a href="https://github.com/poanetwork/poa-netstats-wharehouse/blob/v0.1.0/lib/poa_backend/release/tasks.ex#L17" class="view-source" rel="help" title="View Source">
|
||||
<span class="icon-code" aria-hidden="true"></span>
|
||||
<span class="sr-only">View Source</span>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<section class="docstring">
|
||||
|
||||
</section>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<footer class="footer">
|
||||
<p>
|
||||
<span class="line">
|
||||
Built using
|
||||
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" rel="help" target="_blank">ExDoc</a> (v0.18.4),
|
||||
</span>
|
||||
<span class="line">
|
||||
designed by
|
||||
<a href="https://twitter.com/dignifiedquire" target="_blank" title="@dignifiedquire">Friedel Ziegelmayer</a>.
|
||||
</span>
|
||||
</p>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<script src="dist/app-9bd040e5e5.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
<title>POABackend – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
@ -176,18 +176,35 @@ mix dialyzer</code></pre>
|
|||
|
||||
<p>To build an executable you’ll need Elixir 1.6 (and Erlang/OTP 20).</p>
|
||||
<ol>
|
||||
<li>Start a clean Terminal
|
||||
</li>
|
||||
<li>Once you have a copy of this repository configure the backend for production in the file <code class="inline">config/prod.exs</code>.
|
||||
</li>
|
||||
<li>An example configuration can be found in the current <code class="inline">config/prod.exs</code>.
|
||||
</li>
|
||||
<li>Do a <code class="inline">mix deps.get</code> to fetch, among other dependencies, the tooling for building server executables.
|
||||
</li>
|
||||
<li>We have to export the <code class="inline">MNESIA_HOST</code> variable in order to tell in which node we are going to create the mnesia schema
|
||||
</li>
|
||||
</ol>
|
||||
<pre><code class="elixir">export MNESIA_HOST=poa_backend@127.0.0.1</code></pre>
|
||||
<ol start="5">
|
||||
<li>A <code class="inline">env MIX_ENV=prod mix release --name=poa_backend --env=prod</code> will assemble an executable.
|
||||
</li>
|
||||
</ol>
|
||||
<p>A resulting artifact resides at <code class="inline">_build/prod/rel/poa_backend/releases/0.1.0/poa_backend.tar.gz</code> which you can move to a remote host.
|
||||
Use <code class="inline">tar xfz</code> then <code class="inline">bin/poa_agent start</code> (<code class="inline">bin/poa_agent stop</code> will stop the server cleanly).</p>
|
||||
Use <code class="inline">tar xfz</code> then <code class="inline">bin/poa_backend start</code> (<code class="inline">bin/poa_backend stop</code> will stop the server cleanly).</p>
|
||||
<p>If you want to run it on the local host then the procedure is as simple as: <code class="inline">_build/prod/rel/poa_backend/bin/poa_backend</code>.</p>
|
||||
<ol start="6">
|
||||
<li>Set up Mnesia. After start the <a href="POABackend.html#content"><code class="inline">POABackend</code></a> we have to set up mnesia. First we have to check if the Mnesia directory exists (probably not). In our case we have set it to <code class="inline">priv/data/mnesia</code>
|
||||
</li>
|
||||
</ol>
|
||||
<pre><code class="elixir">config :mnesia,
|
||||
dir: 'priv/data/mnesia' # make sure this directory exists!</code></pre>
|
||||
<p>so we have to create that folder inside the release folder.</p>
|
||||
<p>After that we have to create and migrate the database. In order to do that we have make a <code class="inline">RPC</code> to the running node, this command is run only once (<em>Note that the node must be running, that means we have executed <code class="inline">bin/poa_backend start</code></em>):</p>
|
||||
<pre><code class="elixir">bin/poa_backend rpc Elixir.POABackend.Release.Tasks migrate</code></pre>
|
||||
<p>That will create the Mnesia Database. After those steps the app is ready to be used</p>
|
||||
<p><strong>Note:</strong> executables must be built on the platform (OS and architecture) they are destined for under the project’s current configuration.
|
||||
Other options are possible (see <code class="inline">https://hexdocs.pm/distillery/getting-started.html</code>).</p>
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>API Reference – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
@ -215,6 +215,14 @@ database. If we want to use it we have to declare it in the Config file, inside
|
|||
database. If we want to use it we have to declare it in the Config file, inside the <code class="inline">:receivers</code> section, ie</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="summary-row">
|
||||
<div class="summary-signature"><a href="POABackend.Release.Tasks.html">POABackend.Release.Tasks</a></div>
|
||||
|
||||
<div class="summary-synopsis"><p>This module is needed when we create a release. We are using Mnesia locally so when we start create a release
|
||||
we have to create the Mnesia files there. In order to do that we have to run this <a href="#migrate/0"><code class="inline">migrate/0</code></a> function</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -8,7 +8,7 @@
|
|||
<title>Initial Architecture – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<title>Search – poa_backend v0.1.0</title>
|
||||
<link rel="stylesheet" href="dist/app-480ffdc169.css" />
|
||||
|
||||
<script src="dist/sidebar_items-f62ce50de1.js"></script>
|
||||
<script src="dist/sidebar_items-3a7a458c10.js"></script>
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -112,17 +112,41 @@ defmodule POABackend do
|
|||
|
||||
To build an executable you'll need Elixir 1.6 (and Erlang/OTP 20).
|
||||
|
||||
1. Once you have a copy of this repository configure the backend for production in the file `config/prod.exs`.
|
||||
2. An example configuration can be found in the current `config/prod.exs`.
|
||||
3. Do a `mix deps.get` to fetch, among other dependencies, the tooling for building server executables.
|
||||
4. A `env MIX_ENV=prod mix release --name=poa_backend --env=prod` will assemble an executable.
|
||||
1. Start a clean Terminal
|
||||
2. Once you have a copy of this repository configure the backend for production in the file `config/prod.exs`.
|
||||
3. An example configuration can be found in the current `config/prod.exs`.
|
||||
4. Do a `mix deps.get` to fetch, among other dependencies, the tooling for building server executables.
|
||||
5. We have to export the `MNESIA_HOST` variable in order to tell in which node we are going to create the mnesia schema
|
||||
|
||||
```
|
||||
export MNESIA_HOST=poa_backend@127.0.0.1
|
||||
```
|
||||
|
||||
5. A `env MIX_ENV=prod mix release --name=poa_backend --env=prod` will assemble an executable.
|
||||
|
||||
A resulting artifact resides at `_build/prod/rel/poa_backend/releases/0.1.0/poa_backend.tar.gz` which you can move to a remote host.
|
||||
Use `tar xfz` then `bin/poa_agent start` (`bin/poa_agent stop` will stop the server cleanly).
|
||||
Use `tar xfz` then `bin/poa_backend start` (`bin/poa_backend stop` will stop the server cleanly).
|
||||
|
||||
If you want to run it on the local host then the procedure is as simple as: `_build/prod/rel/poa_backend/bin/poa_backend`.
|
||||
|
||||
6. Set up Mnesia. After start the `POABackend` we have to set up mnesia. First we have to check if the Mnesia directory exists (probably not). In our case we have set it to `priv/data/mnesia`
|
||||
|
||||
```
|
||||
config :mnesia,
|
||||
dir: 'priv/data/mnesia' # make sure this directory exists!
|
||||
```
|
||||
|
||||
so we have to create that folder inside the release folder.
|
||||
|
||||
After that we have to create and migrate the database. In order to do that we have make a `RPC` to the running node, this command is run only once (_Note that the node must be running, that means we have executed `bin/poa_backend start`_):
|
||||
|
||||
```
|
||||
bin/poa_backend rpc Elixir.POABackend.Release.Tasks migrate
|
||||
```
|
||||
|
||||
That will create the Mnesia Database. After those steps the app is ready to be used
|
||||
|
||||
**Note:** executables must be built on the platform (OS and architecture) they are destined for under the project's current configuration.
|
||||
Other options are possible (see `https://hexdocs.pm/distillery/getting-started.html`).
|
||||
"""
|
||||
end
|
||||
end
|
|
@ -0,0 +1,58 @@
|
|||
defmodule POABackend.Release.Tasks do
|
||||
|
||||
@moduledoc """
|
||||
This module is needed when we create a release. We are using Mnesia locally so when we start create a release
|
||||
we have to create the Mnesia files there. In order to do that we have to run this `migrate/0` function.
|
||||
"""
|
||||
|
||||
@start_apps [
|
||||
:crypto,
|
||||
:ssl,
|
||||
:postgrex,
|
||||
:ecto
|
||||
]
|
||||
|
||||
@repos [POABackend.Auth.Repo]
|
||||
|
||||
def migrate() do
|
||||
start_services()
|
||||
|
||||
run_migrations()
|
||||
end
|
||||
|
||||
defp start_services do
|
||||
IO.puts("Starting dependencies..")
|
||||
# Start apps necessary for executing migrations
|
||||
Enum.each(@start_apps, &Application.ensure_all_started/1)
|
||||
|
||||
# Start the Repo(s) for app
|
||||
IO.puts("Starting repos..")
|
||||
Enum.each(@repos, & &1.start_link(pool_size: 1))
|
||||
end
|
||||
|
||||
defp run_migrations do
|
||||
Enum.each(@repos, &run_migrations_for/1)
|
||||
end
|
||||
|
||||
defp run_migrations_for(repo) do
|
||||
case repo.__adapter__.storage_up(repo.config) do
|
||||
:ok ->
|
||||
IO.puts "The database for Mnesia has been created"
|
||||
:ok
|
||||
{:error, :already_up} ->
|
||||
IO.puts "The database for Mnesia has already been created"
|
||||
:ok
|
||||
{:error, error} ->
|
||||
IO.puts "The database for Mnesia couldn't be created: #{inspect error}"
|
||||
:error
|
||||
end
|
||||
app = Keyword.get(repo.config, :otp_app)
|
||||
IO.puts("Running migrations for #{app}")
|
||||
migrations_path = migrations_path()
|
||||
Ecto.Migrator.run(repo, migrations_path, :up, all: true)
|
||||
end
|
||||
|
||||
defp migrations_path(), do: Path.join([repo_path(), "migrations"])
|
||||
defp repo_path(), do: Path.join([priv_dir(), "auth"])
|
||||
defp priv_dir(), do: "#{:code.priv_dir(:poa_backend)}"
|
||||
end
|
91
mix.lock
91
mix.lock
|
@ -1,48 +1,47 @@
|
|||
%{
|
||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [], [], "hexpm"},
|
||||
"bcrypt_elixir": {:hex, :bcrypt_elixir, "0.12.1", "41ff5a4739fcff365fe840637462dc9e22beac07a9dcf3cb5e79b127f5b3a099", [], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [], [], "hexpm"},
|
||||
"certifi": {:hex, :certifi, "2.3.1", "d0f424232390bf47d82da8478022301c561cf6445b5b5fb6a84d49a9e76d2639", [], [{:parse_trans, "3.2.0", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"comeonin": {:hex, :comeonin, "4.1.1", "c7304fc29b45b897b34142a91122bc72757bc0c295e9e824999d5179ffc08416", [], [{:argon2_elixir, "~> 1.2", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:bcrypt_elixir, "~> 0.12.1 or ~> 1.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: true]}, {:pbkdf2_elixir, "~> 0.12", [hex: :pbkdf2_elixir, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"confex": {:hex, :confex, "3.3.1", "8febaf751bf293a16a1ed2cbd258459cdcc7ca53cfa61d3f83d49dd276a992b4", [], [], "hexpm"},
|
||||
"connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [], [], "hexpm"},
|
||||
"cowboy": {:hex, :cowboy, "1.0.4", "a324a8df9f2316c833a470d918aaf73ae894278b8aa6226ce7a9bf699388f878", [], [{:cowlib, "~> 1.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"cowlib": {:hex, :cowlib, "1.0.2", "9d769a1d062c9c3ac753096f868ca121e2730b9a377de23dec0f7e08b1df84ee", [], [], "hexpm"},
|
||||
"credo": {:hex, :credo, "0.10.0", "66234a95effaf9067edb19fc5d0cd5c6b461ad841baac42467afed96c78e5e9e", [], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"db_connection": {:hex, :db_connection, "1.1.3", "89b30ca1ef0a3b469b1c779579590688561d586694a3ce8792985d4d7e575a61", [], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"decimal": {:hex, :decimal, "1.5.0", "b0433a36d0e2430e3d50291b1c65f53c37d56f83665b43d79963684865beab68", [], [], "hexpm"},
|
||||
"dialyxir": {:hex, :dialyxir, "0.5.1", "b331b091720fd93e878137add264bac4f644e1ddae07a70bf7062c7862c4b952", [], [], "hexpm"},
|
||||
"distillery": {:hex, :distillery, "1.5.3", "b2f4fc34ec71ab4f1202a796f9290e068883b042319aa8c9aa45377ecac8597a", [:mix], [], "hexpm"},
|
||||
"earmark": {:hex, :earmark, "1.2.5", "4d21980d5d2862a2e13ec3c49ad9ad783ffc7ca5769cf6ff891a4553fbaae761", [:mix], [], "hexpm"},
|
||||
"ecto": {:hex, :ecto, "2.1.6", "29b45f393c2ecd99f83e418ea9b0a2af6078ecb30f401481abac8a473c490f84", [], [{:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: true]}, {:decimal, "~> 1.2", [hex: :decimal, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.8.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"ecto_mnesia": {:hex, :ecto_mnesia, "0.9.1", "5887e3bcae972d9a26494a87cbd318d401a65b4af324480073d11df654d1b235", [], [{:confex, "~> 3.3", [hex: :confex, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 2.1.6", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.4.2", "332c649d08c18bc1ecc73b1befc68c647136de4f340b548844efc796405743bf", [], [], "hexpm"},
|
||||
"ex_aws": {:hex, :ex_aws, "2.1.0", "b92651527d6c09c479f9013caa9c7331f19cba38a650590d82ebf2c6c16a1d8a", [], [{:configparser_ex, "~> 2.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "1.6.3 or 1.6.5 or 1.7.1 or 1.8.6 or ~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jsx, "~> 2.8", [hex: :jsx, repo: "hexpm", optional: true]}, {:poison, ">= 1.2.0", [hex: :poison, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}, {:xml_builder, "~> 0.1.0", [hex: :xml_builder, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"ex_aws_dynamo": {:hex, :ex_aws_dynamo, "2.0.1", "fd472900779f3bb9cd2b59bde14b130404f751c1990e1fff8b6898150dc457da", [], [{:ex_aws, "~> 2.0", [hex: :ex_aws, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.18.4", "4406b8891cecf1352f49975c6d554e62e4341ceb41b9338949077b0d4a97b949", [], [{:earmark, "~> 1.1", [hex: :earmark, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"excoveralls": {:hex, :excoveralls, "0.9.1", "14fd20fac51ab98d8e79615814cc9811888d2d7b28e85aa90ff2e30dcf3191d6", [:mix], [{:hackney, ">= 0.12.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"gen_stage": {:hex, :gen_stage, "0.14.0", "65ae78509f85b59d360690ce3378d5096c3130a0694bab95b0c4ae66f3008fad", [], [], "hexpm"},
|
||||
"guardian": {:hex, :guardian, "1.1.0", "36c1ea356a1bac02bc120c3f91f4f0259c5aa0ee92cee0efe8def5d7401f1921", [:mix], [{:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.0 or ~> 1.2 or ~> 1.3", [hex: :phoenix, repo: "hexpm", optional: true]}, {:plug, "~> 1.3.3 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}, {:uuid, ">= 1.1.1", [hex: :uuid, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"hackney": {:hex, :hackney, "1.13.0", "24edc8cd2b28e1c652593833862435c80661834f6c9344e84b6a2255e7aeef03", [], [{:certifi, "2.3.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "5.1.2", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"httpoison": {:hex, :httpoison, "1.2.0", "2702ed3da5fd7a8130fc34b11965c8cfa21ade2f232c00b42d96d4967c39a3a3", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"idna": {:hex, :idna, "5.1.2", "e21cb58a09f0228a9e0b95eaa1217f1bcfc31a1aaa6e1fdf2f53a33f7dbd9494", [], [{:unicode_util_compat, "0.3.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"jason": {:hex, :jason, "1.1.1", "d3ccb840dfb06f2f90a6d335b536dd074db748b3e7f5b11ab61d239506585eb2", [], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"jose": {:hex, :jose, "1.8.4", "7946d1e5c03a76ac9ef42a6e6a20001d35987afd68c2107bcd8f01a84e75aa73", [], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"meck": {:hex, :meck, "0.8.11", "2c39e15ec87d847da6cf69b4a1c4af3fd850ae2a272e719e0e8751a7fe54771f", [:rebar3], [], "hexpm"},
|
||||
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [], [], "hexpm"},
|
||||
"mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [], [], "hexpm"},
|
||||
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [], [], "hexpm"},
|
||||
"mock": {:hex, :mock, "0.3.1", "994f00150f79a0ea50dc9d86134cd9ebd0d177ad60bd04d1e46336cdfdb98ff9", [:mix], [{:meck, "~> 0.8.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"msgpax": {:hex, :msgpax, "2.1.1", "833bc9ce6d3e073cf966fec94d3f976ca7100685b4f0efb6e30ef512f2e8a4d7", [], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"parse_trans": {:hex, :parse_trans, "3.2.0", "2adfa4daf80c14dc36f522cf190eb5c4ee3e28008fc6394397c16f62a26258c2", [], [], "hexpm"},
|
||||
"plug": {:hex, :plug, "1.6.1", "c62fe7623d035020cf989820b38490460e6903ab7eee29e234b7586e9b6c91d6", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [], [], "hexpm"},
|
||||
"poolboy": {:hex, :poolboy, "1.5.1", "6b46163901cfd0a1b43d692657ed9d7e599853b3b21b95ae5ae0a777cf9b6ca8", [], [], "hexpm"},
|
||||
"postgrex": {:hex, :postgrex, "0.13.5", "3d931aba29363e1443da167a4b12f06dcd171103c424de15e5f3fc2ba3e6d9c5", [], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ranch": {:hex, :ranch, "1.5.0", "f04166f456790fee2ac1aa05a02745cc75783c2bfb26d39faf6aefc9a3d3a58a", [:rebar3], [], "hexpm"},
|
||||
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.1", "28a4d65b7f59893bc2c7de786dec1e1555bd742d336043fe644ae956c3497fbe", [], [], "hexpm"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.3.1", "a1f612a7b512638634a603c8f401892afbf99b8ce93a45041f8aaca99cadb85e", [], [], "hexpm"},
|
||||
"uuid": {:hex, :uuid, "1.1.8", "e22fc04499de0de3ed1116b770c7737779f226ceefa0badb3592e64d5cfb4eb9", [], [], "hexpm"},
|
||||
"websockex": {:hex, :websockex, "0.4.1", "d7b7191ec3d5dd136683b60114405a5a130a175faade773a07cb52dbd98f9442", [], [], "hexpm"},
|
||||
"worker_pool": {:hex, :worker_pool, "3.1.1", "a9bf27cff366999784a3f0657f016ce3a57901490858cca3fb3be1208bf2110d", [], [], "hexpm"},
|
||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
||||
"bcrypt_elixir": {:hex, :bcrypt_elixir, "0.12.1", "41ff5a4739fcff365fe840637462dc9e22beac07a9dcf3cb5e79b127f5b3a099", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm"},
|
||||
"certifi": {:hex, :certifi, "2.3.1", "d0f424232390bf47d82da8478022301c561cf6445b5b5fb6a84d49a9e76d2639", [:rebar3], [{:parse_trans, "3.2.0", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"comeonin": {:hex, :comeonin, "4.1.1", "c7304fc29b45b897b34142a91122bc72757bc0c295e9e824999d5179ffc08416", [:mix], [{:argon2_elixir, "~> 1.2", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:bcrypt_elixir, "~> 0.12.1 or ~> 1.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: true]}, {:pbkdf2_elixir, "~> 0.12", [hex: :pbkdf2_elixir, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"confex": {:hex, :confex, "3.3.1", "8febaf751bf293a16a1ed2cbd258459cdcc7ca53cfa61d3f83d49dd276a992b4", [:mix], [], "hexpm"},
|
||||
"connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm"},
|
||||
"cowboy": {:hex, :cowboy, "1.0.4", "a324a8df9f2316c833a470d918aaf73ae894278b8aa6226ce7a9bf699388f878", [:make, :rebar], [{:cowlib, "~> 1.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"cowlib": {:hex, :cowlib, "1.0.2", "9d769a1d062c9c3ac753096f868ca121e2730b9a377de23dec0f7e08b1df84ee", [:make], [], "hexpm"},
|
||||
"credo": {:hex, :credo, "0.10.0", "66234a95effaf9067edb19fc5d0cd5c6b461ad841baac42467afed96c78e5e9e", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"db_connection": {:hex, :db_connection, "1.1.3", "89b30ca1ef0a3b469b1c779579590688561d586694a3ce8792985d4d7e575a61", [:mix], [{:connection, "~> 1.0.2", [hex: :connection, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"decimal": {:hex, :decimal, "1.5.0", "b0433a36d0e2430e3d50291b1c65f53c37d56f83665b43d79963684865beab68", [:mix], [], "hexpm"},
|
||||
"dialyxir": {:hex, :dialyxir, "0.5.1", "b331b091720fd93e878137add264bac4f644e1ddae07a70bf7062c7862c4b952", [:mix], [], "hexpm"},
|
||||
"distillery": {:hex, :distillery, "1.5.5", "c6132d5c0152bdce6850fb6c942d58f1971b169b6965d908dc4e8767cfa51a95", [:mix], [], "hexpm"},
|
||||
"earmark": {:hex, :earmark, "1.2.6", "b6da42b3831458d3ecc57314dff3051b080b9b2be88c2e5aa41cd642a5b044ed", [:mix], [], "hexpm"},
|
||||
"ecto": {:hex, :ecto, "2.1.6", "29b45f393c2ecd99f83e418ea9b0a2af6078ecb30f401481abac8a473c490f84", [:mix], [{:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: true]}, {:decimal, "~> 1.2", [hex: :decimal, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.8.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"ecto_mnesia": {:hex, :ecto_mnesia, "0.9.1", "5887e3bcae972d9a26494a87cbd318d401a65b4af324480073d11df654d1b235", [:mix], [{:confex, "~> 3.3", [hex: :confex, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 2.1.6", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"elixir_make": {:hex, :elixir_make, "0.4.2", "332c649d08c18bc1ecc73b1befc68c647136de4f340b548844efc796405743bf", [:mix], [], "hexpm"},
|
||||
"ex_aws": {:hex, :ex_aws, "2.1.0", "b92651527d6c09c479f9013caa9c7331f19cba38a650590d82ebf2c6c16a1d8a", [:mix], [{:configparser_ex, "~> 2.0", [hex: :configparser_ex, repo: "hexpm", optional: true]}, {:hackney, "1.6.3 or 1.6.5 or 1.7.1 or 1.8.6 or ~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jsx, "~> 2.8", [hex: :jsx, repo: "hexpm", optional: true]}, {:poison, ">= 1.2.0", [hex: :poison, repo: "hexpm", optional: true]}, {:sweet_xml, "~> 0.6", [hex: :sweet_xml, repo: "hexpm", optional: true]}, {:xml_builder, "~> 0.1.0", [hex: :xml_builder, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"ex_aws_dynamo": {:hex, :ex_aws_dynamo, "2.0.1", "fd472900779f3bb9cd2b59bde14b130404f751c1990e1fff8b6898150dc457da", [:mix], [{:ex_aws, "~> 2.0", [hex: :ex_aws, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.18.4", "4406b8891cecf1352f49975c6d554e62e4341ceb41b9338949077b0d4a97b949", [:mix], [{:earmark, "~> 1.1", [hex: :earmark, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"excoveralls": {:hex, :excoveralls, "0.10.0", "a4508bdd408829f38e7b2519f234b7fd5c83846099cda348efcb5291b081200c", [:mix], [{:hackney, "~> 1.13", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"gen_stage": {:hex, :gen_stage, "0.14.0", "65ae78509f85b59d360690ce3378d5096c3130a0694bab95b0c4ae66f3008fad", [:mix], [], "hexpm"},
|
||||
"guardian": {:hex, :guardian, "1.1.1", "be14c4007eaf05268251ae114030cb7237ed9a9631c260022f020164ff4ed733", [:mix], [{:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.0 or ~> 1.2 or ~> 1.3", [hex: :phoenix, repo: "hexpm", optional: true]}, {:plug, "~> 1.3.3 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"hackney": {:hex, :hackney, "1.13.0", "24edc8cd2b28e1c652593833862435c80661834f6c9344e84b6a2255e7aeef03", [:rebar3], [{:certifi, "2.3.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "5.1.2", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.1", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"httpoison": {:hex, :httpoison, "1.3.0", "edfd6ca53b57377a7a8db226bc42a2bddfeb39951c61ddfe15ec930225e6e46b", [:mix], [{:hackney, "~> 1.8", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"idna": {:hex, :idna, "5.1.2", "e21cb58a09f0228a9e0b95eaa1217f1bcfc31a1aaa6e1fdf2f53a33f7dbd9494", [:rebar3], [{:unicode_util_compat, "0.3.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"jason": {:hex, :jason, "1.1.1", "d3ccb840dfb06f2f90a6d335b536dd074db748b3e7f5b11ab61d239506585eb2", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"jose": {:hex, :jose, "1.8.4", "7946d1e5c03a76ac9ef42a6e6a20001d35987afd68c2107bcd8f01a84e75aa73", [:mix, :rebar3], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"meck": {:hex, :meck, "0.8.12", "1f7b1a9f5d12c511848fec26bbefd09a21e1432eadb8982d9a8aceb9891a3cf2", [:rebar3], [], "hexpm"},
|
||||
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
|
||||
"mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [:mix], [], "hexpm"},
|
||||
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"},
|
||||
"mock": {:hex, :mock, "0.3.2", "e98e998fd76c191c7e1a9557c8617912c53df3d4a6132f561eb762b699ef59fa", [:mix], [{:meck, "~> 0.8.8", [hex: :meck, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"msgpax": {:hex, :msgpax, "2.1.1", "833bc9ce6d3e073cf966fec94d3f976ca7100685b4f0efb6e30ef512f2e8a4d7", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm"},
|
||||
"parse_trans": {:hex, :parse_trans, "3.2.0", "2adfa4daf80c14dc36f522cf190eb5c4ee3e28008fc6394397c16f62a26258c2", [:rebar3], [], "hexpm"},
|
||||
"plug": {:hex, :plug, "1.6.2", "e06a7bd2bb6de5145da0dd950070110dce88045351224bd98e84edfdaaf5ffee", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm"},
|
||||
"poolboy": {:hex, :poolboy, "1.5.1", "6b46163901cfd0a1b43d692657ed9d7e599853b3b21b95ae5ae0a777cf9b6ca8", [:rebar], [], "hexpm"},
|
||||
"postgrex": {:hex, :postgrex, "0.13.5", "3d931aba29363e1443da167a4b12f06dcd171103c424de15e5f3fc2ba3e6d9c5", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ranch": {:hex, :ranch, "1.6.1", "2609724c9a7e163ca716a46c9087e037db4262935f5d866122ba158ed917c233", [:rebar3], [], "hexpm"},
|
||||
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.1", "28a4d65b7f59893bc2c7de786dec1e1555bd742d336043fe644ae956c3497fbe", [:make, :rebar], [], "hexpm"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.3.1", "a1f612a7b512638634a603c8f401892afbf99b8ce93a45041f8aaca99cadb85e", [:rebar3], [], "hexpm"},
|
||||
"websockex": {:hex, :websockex, "0.4.1", "d7b7191ec3d5dd136683b60114405a5a130a175faade773a07cb52dbd98f9442", [:mix], [], "hexpm"},
|
||||
"worker_pool": {:hex, :worker_pool, "3.1.1", "a9bf27cff366999784a3f0657f016ce3a57901490858cca3fb3be1208bf2110d", [:rebar3], [], "hexpm"},
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue