Должен ли я использовать файл YAML или DB для хранения моих сообщений об успехе / ошибке в приложении Rails? - PullRequest
0 голосов
/ 13 мая 2019

В моем приложении на Rails после выполнения некоторого кода я хочу отправлять пользователям сообщения Slack, чтобы уведомить их о результате выполнения.Есть несколько процессов, для которых я хочу отправить эти сообщения, и вкратце, мне нужно где-то хранить шаблоны сообщений для успехов / ошибок (это просто короткие строки, такие как «Привет, мы успешно выполнили x!», Ноони различаются для каждого процесса).

Прямо сейчас у меня есть модель SlackMessage в БД, из которой вы можете получить содержимое сообщения.Тем не менее, я слышал, что лучше управлять пользовательскими сообщениями, подобными этому, в файле yml, так как позже легче добавлять / редактировать сообщения (например, это , даже если это для локалей).

Какова наилучшая практика для такого сценария?Если вы не хотите использовать БД, я бы хотел, чтобы вы дали указатели или ссылку на то, как это сделать (с точки зрения использования файлов yml, единственный материал, который я смог найти, был интернационализация ).

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Почему вы не используете уже существующий модуль I18n в Rails?Это идеально подходит для хранения сообщений и дает вам возможность использовать переводы, если они вам когда-нибудь понадобятся в будущем.

Получение сообщения очень просто:

Slack.message(I18n.t(:slack_message, scope:'slack'))

В этом случае вам нужнофайл перевода, подобный этому:

en:
  slack:
    slack_message: This is the message you are going to select.

Подробнее о I18n: https://guides.rubyonrails.org/i18n.html

0 голосов
/ 13 мая 2019

YAML обычно намного медленнее, чем БД для загрузки данных.Кроме того, анализаторы YAML обычно загружают все данные, даже если в потоке YAML несколько документов.

Для программ, которые имеют длительное время выполнения и используют большую часть сообщений, использование YAML обычно не является проблемой.Но в краткосрочных программах загрузка может быть значительной частью времени выполнения, и такие методы, как задержка загрузки и кэширование, могут не помочь.Как пример: я получил PR для моей библиотеки YAML некоторое время назад, что задержало создание экземпляров регулярных выражений в библиотеке, поскольку это задержало запуск некоторых программ.

Если у вас много сообщений, они всеостаться в памяти после загрузки из YAML, это может быть проблемой.С БД гораздо более распространенным является получение только того, что необходимо, и использование БД для эффективного выполнения этой задачи (кэширование и т. Д.).

Если вышеупомянутые преимущества и критерии не помогают вам принять решение,Вы также можете использовать оба способа: иметь простоту чтения / редактирования YAML и скорости, кэширования и т. д. БД.«Просто» преобразуйте поток YAML в БД, либо явно после редактирования документа YAML, либо при первом использовании вашей программой (просматривая файлы с отметками даты и времени).Это подход, при котором такие программы, как postfix, используют postmap (хотя входные данные являются текстовыми, но не YAML-файлами).

...