在服务器启动时读取文件并在 Phoenix 中初始化变量
Reading from file and initialising variable in Phoenix on server startup
我有一个大文件,其中包含我想在服务器启动时读入列表的单词。然后该列表应该在控制器中可用。
我认为文件读取应该发生在 lib/Appname.ex
- 带文字的文本文件应该放在哪里?如果我把它放在 web/static/assets 中,我如何获得该位置的相对路径?
- 将列表读入 Appname.ex(在 /lib 中)中的模块属性是否可行?或者有更好的方法吗?
我想出了一个办法。重点是将一堆单词读入内存并能够 select 随机单词。我做了什么:
- 将文件放入 /web/static/assets
- 在/lib/Appname.ex中初始化了一个属性并做了一个获取随机词的方法:
@words File.read!("web/static/assets/words.txt") |> String.split("\n")</p>
<p>def word 做
@words |> Enum.random
结尾
- 调用了控制器中的方法:
def index(conn, _params) do
render conn, "index.html", word: Appname.word()
end
不知道这是否是个好方法,但它确实有效。
我有一个大文件,其中包含我想在服务器启动时读入列表的单词。然后该列表应该在控制器中可用。
我认为文件读取应该发生在 lib/Appname.ex
- 带文字的文本文件应该放在哪里?如果我把它放在 web/static/assets 中,我如何获得该位置的相对路径?
- 将列表读入 Appname.ex(在 /lib 中)中的模块属性是否可行?或者有更好的方法吗?
我想出了一个办法。重点是将一堆单词读入内存并能够 select 随机单词。我做了什么:
- 将文件放入 /web/static/assets
- 在/lib/Appname.ex中初始化了一个属性并做了一个获取随机词的方法:
@words File.read!("web/static/assets/words.txt") |> String.split("\n")</p>
<p>def word 做
@words |> Enum.random
结尾
- 调用了控制器中的方法:
def index(conn, _params) do render conn, "index.html", word: Appname.word() end
不知道这是否是个好方法,但它确实有效。