Temporary directories that are monitored and automatically removed in Elixir.
The package can be installed by adding tmp to your list of dependencies in mix.exs:
def deps do
[
{:tmp, "~> 0.3.0"}
]
endDefine your Tmp module:
defmodule MyApp.Tmp do
use Tmp
end
# Or with a custom base directory
defmodule MyApp.CustomTmp do
use Tmp, base_dir: "/path/where/tmp/dirs/will/be"
endAdd it to your supervision tree:
children = [
{MyApp.Tmp, name: MyApp.Tmp}
]Use it in your code:
MyApp.Tmp.dir(fn tmp_dir_path ->
file_path = Path.join(tmp_dir_path, "my_file")
# do work with file_path...
# then return a value
Enum.sum([1,2,3])
end)
# => 6When calling MyApp.Tmp.dir/2, you can pass the following options:
:prefix(optional) - Prefix for the temporary directory name, defaults tonil:base_dir(optional) - Base directory for the temporary directory, defaults toSystem.tmp_dir()or the value set inuse Tmp:timeout(optional) - Timeout in milliseconds, defaults to:infinity
MyApp.Tmp.dir(fn tmp_dir_path ->
File.touch(Path.join(tmp_dir_path, "file_one"))
# ... other important work
2 + 2
end, prefix: "my_app", base_dir: "/tmp/custom_base")
# => 4Documentation can be found at https://hexdocs.pm/tmp.
Tmp is MIT licensed.