2011-08-11 5 views
4

Rails 3.1アプリケーションにHTML5オフラインサポートを追加したいと思います。この目的に適した宝石rack-offlineがあります。ただし、ラックオフラインでは、publicフォルダ内のアセットだけがアプリケーションキャッシュマニフェストファイルに追加されます。 assetsフォルダ(アセットパイプラインが生成するもの)からコンパイルされたアセットをすべて追加するにはどうすればよいですか?私は、コンパイルされた資産へのパスを取得することができ、私が持っているRails.public_pathRails 3.1アプリケーションにHTML5オフラインサポートを追加する

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 

同じ方法:


具体的には、私は私のroutes.rbファイルに次がありますか?こうすることで、上記のコードを使用して、そのパスのファイルをキャッシュマニフェストに追加することができます。

答えて

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ですべてですが、なぜそれwouldnt仕事何か理由を参照してください – broomyocymru

+0

ありがとう!実際に私は自分のレール3.2アプリでそれを使用しています。彼らは正常に動作します! – Edditoria

関連する問題