Чтение из файла и инициализация переменной в Phoenix при запуске сервера

У меня есть большой файл со словами, которые я хочу прочитать в списке при запуске сервера. Затем список должен быть доступен в контроллере.

Я решил, что чтение файла должно происходить в lib/Appname.ex

  • Где разместить текстовый файл со словами? Если я помещу его в web/static/assets, как мне получить относительный путь к этому местоположению?
  • Это жизнеспособный подход для чтения списка в атрибуте модуля в Appname.ex (в/lib)? Или есть лучший способ сделать это?

person bulldog_in_the_dream    schedule 13.03.2016    source источник
comment
Не могли бы вы немного объяснить, как вы планируете использовать список в контроллере?   -  person josemrb    schedule 14.03.2016
comment
Смотрите мой ответ ниже.   -  person bulldog_in_the_dream    schedule 14.03.2016


Ответы (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

Не знаю, хороший ли это способ сделать это, но он работает.

person bulldog_in_the_dream    schedule 14.03.2016