2011-08-11 5 views
4

Я хочу добавить автономную поддержку HTML5 для моего приложения Rails 3.1, и я столкнулся с rack-offline, камнем, подходящим для этой цели. Тем не менее, в стойке только добавляет активы в папку public в файл манифеста кеша приложения. Как я могу добавить все скомпилированные активы из моей папки assets (те, которые генерирует конвейер активов)?Добавление автономной поддержки HTML5 в приложение Rails 3.1


В частности, у меня есть следующий в моем routes.rb файле:

offline = Rack::Offline.configure do 
    cache "images/masthead.png" 

    public_path = Rails.public_path 
    Dir[public_path.join("javascripts/*.js")].each do |file| 
    cache file.relative_path_from(public_path) 
    end 

    network "/" 
end 

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

ответ

3

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

Rack::Offline.configure do 
    cache "images/masthead.png" 

    public_path = Rails.public_path 
    Dir[public_path.join("javascripts/*.js")].each do |file| 
    cache file.relative_path_from(public_path) 
    end 

    network "/" 
end 

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

Rack::Offline.configure do 
    cache "assets/application.js" 
    cache "assets/application.css" 
    network "/" 
end 
+0

Круто, и как кэшировать домашней страницы, так что 'HTTP: // example.com /' будет работать в автономном режиме, но 'HTTP: // example.com/signup' должен пройти сеть? – Chetan

+0

Ничего, похоже, что приведенная выше конфигурация делает именно это. Благодаря! – Chetan

+0

Подождите, я заберу это, на домашней странице не было. Как сделать кеширование домашней страницы? – Chetan

2

У меня была аналогичная проблема, и я написал камень для решения проблемы с отпечатками MD5.

https://rubygems.org/gems/assets_offline

+0

Это работает в рельсах 3.2? Я новичок и читаю в github. Спасибо. – Edditoria

+1

Не пробовал, мои приложения все на 3.1, но я не могу понять, почему он не работает – broomyocymru

+0

Спасибо! На самом деле я использую его в своих приложениях 3.2. Они работают правильно! – Edditoria