【问题标题】:Adding HTML5 offline support to a Rails 3.1 app向 Rails 3.1 应用程序添加 HTML5 离线支持
【发布时间】:2011-08-11 03:05:28
【问题描述】:

我想为我的 Rails 3.1 应用程序添加 HTML5 离线支持,我遇到了 rack-offline,这是一个适合此目的的 gem。但是,rack-offline 仅将 public 文件夹中的资产添加到应用程序缓存清单文件中。我如何让它还从我的assets 文件夹(资产管道生成的那些)中添加所有已编译的资产?


具体来说,我的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 的方式相同,我可以获得编译资产的路径吗?这样我就可以使用上面的代码将该路径中的文件添加到缓存清单中。

【问题讨论】:

    标签: ruby-on-rails html offline assets


    【解决方案1】:

    首先,我相信这段代码应该放在初始化程序中,因为它只是配置:

    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
    

    【讨论】:

    • 酷,我如何缓存主页,让http://example.com/可以离线工作,但http://example.com/signup必须通过网络?
    • 没关系,看起来上面的配置就是这样做的。谢谢!
    • 等等,我收回了,它并没有在主页上显示。如何让它缓存主页?
    • 你想为主页添加一个缓存指令,你应该能够像这样添加主页的路径cache "home/index" 编辑:嗯,因为那是一个根 url,我不确定。 .. 一秒
    • 哈哈,对不起,我收回了我收回的东西。它确实有效,问题不在于缓存清单,而在于 iOS。看起来它默认缓存根 url。酷!
    【解决方案2】:

    我遇到了类似的问题,写了一个 gem 来解决资产 MD5 指纹问题。

    https://rubygems.org/gems/assets_offline

    【讨论】:

    • 它在 rails 3.2 中有效吗?我是新手,在 github 上阅读。谢谢。
    • 没试过,我的应用都在 3.1 上,但我看不出有什么不工作的原因
    • 谢谢!实际上我在我的 rails 3.2 应用程序中使用它。它们工作正常!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2011-12-24
    • 1970-01-01
    • 2017-05-12
    • 2015-11-12
    • 2010-11-07
    相关资源
    最近更新 更多