Rails Asset Pipeline: Возвращает дайджест версию, когда запрашивается не дайджест

Я предоставляю фрагмент кода, который клиент может вставить в свой статический HTML, который ссылается на мой файл application.js.

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

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

Есть мысли о том, как лучше всего с этим справиться?

2 ответа

Решение

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

Вы можете вставить своему клиенту кодовую ссылку /public-assets/my_assets

В вашем маршруте создайте маршрут:

match '/public-assets/:asset_name' => 'PublicAsset#index'

И создай свой контроллер PublicAssetController

class PublicAssetContoller < ApplicationController::Base

  def index
    redirect_to asset_path(params[:asset_name])
  end

end

Мы делаем нечто подобное для нашего "публичного" javascript, который интегрирован в стороннее веб-приложение.

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

Другие вопросы по тегам