У меня есть большой файл со словами, которые я хочу прочитать в списке при запуске сервера. Затем список должен быть доступен в контроллере.
Я решил, что чтение файла должно происходить в lib/Appname.ex
- Где разместить текстовый файл со словами? Если я помещу его в web/static/assets, как мне получить относительный путь к этому местоположению?
- Это жизнеспособный подход для чтения списка в атрибуте модуля в Appname.ex (в/lib)? Или есть лучший способ сделать это?
Ответ 1 · рейтинг 2 · bulldog_in_the_dream
Я придумал способ сделать это. Суть в том, чтобы прочитать кучу слов в память и иметь возможность выбрать случайное слово. Что я сделал:
- Поместите файл со словами в /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
Не знаю, хороший ли это способ сделать это, но он работает.