如何更改机架脱机的默认行为

时间:2011-02-05 10:41:45

标签: ruby-on-rails-3 rack

我正在尝试使用rials离线机架,以使我的网页脱机使用。默认情况下,机架脱机会将公用文件夹中的所有文件都放入缓存清单中。我应该在哪个文件中进行更改,以便将我想要的文件添加到缓存清单中。我想在我的views文件夹中包含该文件。

2 个答案:

答案 0 :(得分:7)

您需要将其添加到routes.rb文件中。这是我的routes.rb文件,带有自定义清单。这将为您提供索引和新路由以及公共根目录中的所有html文件(* .html)以及子文件夹中的所有文件到public(* / *。*)。你可以根据需要对公共文件夹中的内容进行切片和切块。

我不知道如何在离线时获取数据库特定的路线,如show和edit。我想象Javascript是必需的。查看Railscast episode 248了解集成JS的一些想法

OfflineConfirm::Application.routes.draw do
  #match '/application.manifest' => Rails::Offline
  resources :contacts

  offline = Rack::Offline.configure do
    cache ["contacts/new", "contacts"]
    public_path = Rails.root.join("public")
    Dir[public_path.join("*.html"),
        public_path.join("*/*.*")].each do |file|
      p = Pathname.new(file)
      cache p.relative_path_from(public_path)
    end

    network "/"
  end

  match '/application.manifest' => offline
end

上面的路线文件将产生以下application.manifest

CACHE MANIFEST
# 700ae3e3002382cb98b93c299d7b7bda151183b4703ef65d4c46b0ecf9c46093
contacts/new
contacts
404.html
422.html
500.html
index.html
images/rails.png
javascripts/application.js
javascripts/jquery.js
javascripts/jquery.min.js
javascripts/rails.js
stylesheets/scaffold.css

NETWORK:
/

答案 1 :(得分:0)

没有服务器,视图文件夹中的所有文件都不可用。您想在缓存清单中建立路由吗?例如“/ about”,例如对应于“views / about.haml”文件?

将此添加到您的配置中:

offline = Rack::Offline.configure do
  cache "about" # or whatever your route is
  public_path = Rails.public_path
  Dir[public_path.join("javascripts/*.js")].each do |file|
    cache file.relative_path_from(public_path)
  end
end