【问题标题】:how to change default behaviour of rack offline如何更改机架离线的默认行为
【发布时间】:2011-02-05 10:41:44
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails-3 rack


    【解决方案1】:

    您需要将其添加到您的 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:
    /
    

    【讨论】:

    • 它不工作。我的视图中有显示、编辑和列表。会不会有问题。我还在底部提到了 match ':controller(/:action(/:id(.:format)))' 来路由这些视图。
    • 我认为 :id 没有任何作用。通常,当您传递 ID 时,您希望控制器进入数据库。因此,您正在创建一个动态事务,您的控制器将在运行时决定要做什么。离线时任何类型的动态交易都不起作用,只能显示静态页面。您需要使用 Javascript 处理动态数据
    【解决方案2】:

    在没有服务器的情况下,您的视图文件夹中的所有文件均不可用。您想在缓存清单中提供可用的路由吗?例如“/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
    

    【讨论】:

    • 你的环境配置文件大概是?
    • 我将该代码包含在环境配置文件中。但它没有缓存文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多