Рендеринг внешне измененного файла в Rails - PullRequest
1 голос
/ 07 июня 2009

У меня есть задание cron, которое анализирует несколько XML-каналов каждые десять минут и создает несколько партиалов для включения на каждую страницу в моем проекте Rails с помощью метода render: file. Проблема в том, что, очевидно, они не обновляются, пока сервер не перезапустится.

В любом случае, что я могу сделать, чтобы rails обновлял этот файл каждый раз?

Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 13 сентября 2011

Используйте вместо:

render :inline => File.read(file_name), :layout => true
2 голосов
/ 14 июня 2009

Я думаю, вы неправильно используете render (: file). Это определенно не так, как это предполагается использовать. Предполагается, что рендеринг частичного используется для визуализации модульного фрагмента кода erb (или любого другого используемого шаблона) в нескольких местах, а не в методе загрузки данных. Вы используете его (кажется) для загрузки динамически изменяющихся данных.

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

Для большого прохождения кеширования фрагментов: http://www.railsenvy.com/2007/3/20/ruby-on-rails-caching-tutorial-part-2

Вероятно, ваша задача cron запустит скрипт скрипт / бегун, который создаст фрагмент, который вы хотите кешировать.

Если я не здесь, пожалуйста, попробуйте уточнить, какой тип файла вы загружаете и чего пытаетесь достичь.

1 голос
/ 07 июня 2009

Это происходит потому, что в рабочем режиме Rails обналичивает все свои классы и представления / частичные значения. Чтобы решить эту проблему, вы можете визуализировать свои части внутри блока кэширования фрагмента и использовать метод expire_fragment, когда вы хотите обновить содержимое блока. Другим способом может быть переключение в режим разработки, но это замедлит работу вашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...