Как выборочно отключить кэширование шаблонов в Rails? - PullRequest
2 голосов
/ 12 ноября 2010

Я отправляю электронные письма в фоновом режиме, используя ActionMailer. Пользователи могут создавать новые шаблоны электронной почты, но они не распознаются, пока фоновое задание не будет перезапущено. Используется для использования

ActionView::TemplateFinder.reload!

, которая вызвала перезагрузку шаблонов (теперь не поддерживается в 2.3.4). Я пытался

ActionView::Base.cache_template_loading = false

но это не работает.

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

В итоге я установил глобальную переменную в фоновом процессе перед загрузкой среды Rails:

$background = true

, затем в environment / production.rb:

config.action_view.cache_template_loading = !$background

Не в восторге, но это работает.Я получаю перезагрузку шаблонов для шаблонов электронной почты в моей фоновой работе, но шаблоны кэшированных представлений для онлайн-приложения.

0 голосов
/ 12 ноября 2010

Поскольку ваши пользователи могут создавать (и, возможно, изменять) шаблоны, почему бы вам не сохранить их в базе данных и не отобразить их как встроенный файл erb?

render :inline => template_record.contents

Теперь, когда я предложил это, я заметил ...Вы также можете использовать :inline, чтобы вручную прочитать шаблон и передать его в ActionView.Вы должны будете обработать исключительный случай, когда шаблон не существует.

render :inline => File.read( ... )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...