【发布时间】:2011-02-05 10:41:44
【问题描述】:
我正在尝试在里亚尔中离线使用 rack 以使我的网页可以离线使用。默认情况下,机架脱机将公用文件夹中的所有文件放入缓存清单。我应该在哪个文件中进行更改,以便将我想要的文件添加到缓存清单中。我想将该文件包含在我的视图文件夹中。
【问题讨论】:
标签: ruby-on-rails-3 rack
我正在尝试在里亚尔中离线使用 rack 以使我的网页可以离线使用。默认情况下,机架脱机将公用文件夹中的所有文件放入缓存清单。我应该在哪个文件中进行更改,以便将我想要的文件添加到缓存清单中。我想将该文件包含在我的视图文件夹中。
【问题讨论】:
标签: ruby-on-rails-3 rack
您需要将其添加到您的 routes.rb 文件中。这是我的带有自定义清单的 routes.rb 文件。这将为您提供索引和新路由以及公共根目录 (*.html) 中的所有 html 文件以及公共子文件夹中的每个文件 (*/*.*)。您可以根据需要对公共文件夹中的内容进行切片和切块。
我不知道如何在离线时获取特定于数据库的路由,例如显示和编辑。我想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:
/
【讨论】:
在没有服务器的情况下,您的视图文件夹中的所有文件均不可用。您想在缓存清单中提供可用的路由吗?例如“/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
【讨论】: