Current section
Files
Jump to
Current section
Files
lib/mix/tasks/session.setup.ex
defmodule Mix.Tasks.Session.Setup do
use Mix.Task
@shortdoc "Creates the Mnesia table for :plug_session_mnesia"
@moduledoc """
Creates the Mnesia table for `:plug_session_mnesia`.
To set up the Mnesia table for session storage, configure it in your
`config.exs`:
config :plug_session_mnesia,
table: :session
Then, simply run this mix task:
mix session.setup
If you use to start your IEx development sessions with a node name, you must
also run `session.setup` with the same node name to effictively create the
Mnesia table on the good node:
elixir --sname "my_node@my_host" -S mix session.setup
## Configuration
By default, the Mnesia files will be stored in `Mnesia.nonode@nohost` in your
project directory. You can add this directory to your `.gitignore`. If you
want to store them elsewhere, you can configure Mnesia in your `config.exs`:
config :mnesia,
dir: 'path/to/dir' # Note the simple quotes, Erlang strings are charlists ;-)
For more information about Mnesia and its configuration, please see `:mnesia`
in the Erlang documentation.
"""
@spec run(OptionParser.argv) :: boolean
def run(_argv) do
PlugSessionMnesia.Helpers.setup!
table = Application.fetch_env!(:plug_session_mnesia, :table)
Mix.shell.info IO.ANSI.green <> "The Mnesia table '#{table}' has been " <>
"successfully set up for session storage!"
rescue
e in PlugSessionMnesia.TableNotDefined ->
Mix.shell.error PlugSessionMnesia.TableNotDefined.message(e)
e in PlugSessionMnesia.TableExists ->
Mix.shell.error PlugSessionMnesia.TableExists.message(e)
end
end