Я пытаюсь настроить автономную стойку в Sinatra, но у меня возникают проблемы с настройкой. В рельсах это довольно просто, но не нашел примеров в Синатре...

2
roberto rodriguez 31 Мар 2011 в 00:45

1 ответ

По сути, в вашем config.ru сопоставьте /application.manifest с Rack::Offline. (Если вы не знакомы с использованием config.ru в приложении Sinatra, ознакомьтесь с эта часть документации Sinatra.) Вот пример, который кэширует все файлы в каталоге public:

require 'your-app'
require 'rack/offline'

map "/application.manifest" do
  offline = Rack::Offline.new :cache => true, :root => "public" do
    # Cache all files under the directory public
    Dir[File.join(settings.public, "**/*")].each do |file|
      cache file.sub(File.join(settings.public, ""), "")
    end

    # All other files should be downloaded
    network '/'
  end

  run offline
end

map "/" do
  run Sinatra::Application
end

Не забудьте установить manifest="/application.manifest" в свой тег html, и все будет готово. Вы должны взглянуть на README для rack-offline для получения дополнительной документации и объяснения того, как это работает. .

1
Miikka 2 Апр 2011 в 11:48