Elixir 中的外部应用程序配置

External Application Configuration in Elixir

我在使外部应用程序配置正常工作时遇到了一些问题。我目前正在编写一个基于文本的冒险游戏来学习 Elixir。我正在考虑将 "room" 定义存储为 JSON 在 "assets" 目录中。

看一下我的目录结构:

.
├── _build
│   ├── dev
│   └── test
├── assets
│   ├── rooms  <---
│   └── items
├── config
├── deps
│   └── poison
├── lib
│   └── myzork
└── test

我试过Application.app_dir/1Application.app_dir/2,但是当我使用iex -S mix.

时,_build下的那些参考文件

我如何让这个目录与我的代码一起发布?有没有长生不老药的方式来引用这些文件?还是我以完全错误的方式解决了这个问题?

如果你想在构建和发布应用程序时随身携带这些资产,那么我建议将它们放在 priv 中(如 priv/assets),这样 Application.app_dir(:my_app, "priv") 就很容易找回它们。

然而,您的用例表明您可能仅在编译期间需要这些资产(以便在编译时生成这些房间的 Elixir 表示)。如果是这样,那么将它们放在任何你想要的地方,无论它们在哪里,都可以读取它们 - 使用像 File.cwd/1 和类似的函数来构建它们的路径。