在服务器启动时从Phoenix中读取文件并初始化变量

时间:2016-03-13 19:03:50

标签: elixir phoenix-framework

我有一个包含单词的大文件,我想在服务器启动时读入列表。然后该列表应该在控制器中可用。

我认为文件读取应该在lib / Appname.ex

中进行
  • 带文字的文字文件应放在哪里?如果我将它放在web / static / assets中,我如何获得该位置的相对路径?
  • 将列表读入Appname.ex(in / lib)中的模块属性是否可行?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我想出了办法。关键是要将一堆单词读入内存并能够选择一个随机单词。我做了什么:

  • 将文件放在/ web / static / assets
  • 在/lib/Appname.ex中初始化了一个属性,并创建了一个获取随机词的方法:

@words File.read!("web/static/assets/words.txt") |> String.split("\n")

def word do @words |> Enum.random end

  • 在控制器中调用该方法: def index(conn, _params) do render conn, "index.html", word: Appname.word() end

不知道这是否是一种很好的方法,但它确实有效。

相关问题