Как я могу остановить рельсы от кэширования паролей из внешнего приложения rails или очистить кеш с помощью задачи - PullRequest
1 голос
/ 14 февраля 2012

У меня есть приложение rails, которое отображает контент, который отображается как частичный, который находится за пределами моего приложения rails, но на том же веб-сервере.

Все это отображается нормально, однако смысл этого состоял в том, чтобы позволить кому-то еще загружать содержимое в эту папку без необходимости перезагружать приложение rails. Развертывание и отображение - это хорошо, однако содержимое кэшируется и поэтому не будет обновляться до перезагрузки серверов. Я попытался создать фрагмент вокруг вызова частичного и создать задачу rake, чтобы удалить его при развертывании контента:

На мой взгляд:

    <% cache("frag_key") do %>
      <%= render :partial => "#{@content_path}.rhtml" %> 
    <% end %>

Rake Task

    namespace :cache do
      desc 'Clear memcache'
      task :clear => :environment do
        Rails.cache.delete('frag_key')
      end
    end

Есть ли способ остановить кеширование этих конкретных файлов? Должно ли мое решение теоретически работать, и я делаю что-то не так? Любая помощь приветствуется.

Редактировать: я должен также отметить, что я не использую memcache.

1 Ответ

0 голосов
/ 14 февраля 2012

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

Что вы можете сделать, это просто обработать партиал как внешний файл и прочитать его с диска со стандартными операциями ввода-вывода. если вам нужно выполнить какой-то код rails или иметь доступ к специфике приложения, этот подход не сработает.

Я помню, что читал кое-что о хранении кода представления в базе данных в превосходной книге Хосе Валимса "Создание приложений Rails". возможно, это дает вам некоторые идеи о том, как вы могли бы найти правильное решение вашей проблемы.

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