Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: bulldog_in_the_dreamОтветов: 1

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

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

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

phoenix-frameworkelixir

Ответы

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы