smart | Webentwicklung
Alles rund um HTML5, PHP, WordPress & Co.

Ruby on Rails: AppCache-Manifest mit rack-offline erstellen

13. Juni 2013
Stephan
Ruby on Rails: HTML5 Application Cache Manifest mit rack-offline erstellen

Mit der HTML5 Application Cache API ist es möglich (statische) Ressourcen, wie z.B. HTML-, CSS- und JavaScript-Dateien lokal im Browser zu speichern, um so eine Webapplikation auch Offline nutzen zu können. Diesbezüglich müssen in einer sogenannten Manifest-Datei die zu cachenden Ressourcen aufgelistet werden.

Für kleine Projekte bzw. Webapplikationen könnt ihr das Manifest natürlich auch manuell anlegen und aktualisieren. Effizienter und vor allem für größere Webapplikationen besser geeignet, ist die automatische Erstellung und Aktualisierung des Cache-Manifests.

Im Folgenden erfahrt ihr, wie ihr mit dem Gem „rack-offline“ automatisch ein Manifest für euer Rails-Projekt erstellt.

rack-offline installieren

Bei „rack-offline“ handelt es sich um ein normales Gem, dass ihr einfach in eurem Gemfile angebt:

gem 'rack-offline'

Anschließend mittels Bundler den Befehl bundle install in eurer Konsole oder direkt in eurer verwendeten IDE aufrufen und schon ist „rack-offline“ installiert.

Manifest in den HTML-Dateien referenzieren

Damit der Browser merkt, dass er ein Manifest herunterladen soll und die darin aufgelisteten Dateien cached, müssen wir das Manifest referenzieren. Dazu öffnet im Verzeichnis app/views/layouts eure application.html.erb und passt den html-Tag wie folgt an:

<html manifest="/appcache.manifest">

URL-Route für das Manifest hinzufügen

Damit Rails mit der Anfrage zu der URL /appcache.manifest etwas anfangen kann, müssen wir eine neu URL-Route in unserer routes.rb (befindet sich im Verzeichnis config) hinzufügen:

if Rails.env.production?
    offline = Rack::Offline.configure :cache_interval => 120 do
        cache ActionController::Base.helpers.asset_path('application.css')
        cache ActionController::Base.helpers.asset_path('application.js')

        network '/'
    end
    
    match '/appcache.manifest' => offline, :via => :get
end

Im „Development“-Modus möchten wir im Normalfall nicht, dass unsere Webapplikation geached wird. Aus diesem Grund gilt unsere hinzugefügte URL-Route nur für den „Production“-Modus.

Zusätzlich zur URL-Route geben wir an, dass wir alle JavaScript- und CSS-Dateien aus der Asset-Pipeline cachen wollen.

Von nun an wird automatisch ein Manifest erstellt und dieses auotmatisch aktualisiert, falls sich an den Assets (CSS, JavaScript-Dateien) etwas geändert hat.

Fazit

Mit dem Gem „rack-offline“ ist es ein leichtes eine Manifest-Datei zum Einsatz des HTML5 Application Caches automatisch zu erstellen.

Spezielle Tipps für den HTML5 Application Cache im Zusammenhang mit Rails findet ihr in dem Artikel „Rails 3.0 Offline Application – Lessons Learned“.

Kommentare  
0 Kommentare vorhanden
0 Trackbacks/Pingbacks vorhanden
Du bist herzlich eingeladen auch ein Kommentar zu hinterlassen!
Kommentar schreiben

Vielen Dank für dein Kommentar!