Я пытаюсь использовать сервисного работника в приложении Ruby on Rails.Ruby on Rails & service worker
Мне нужно использовать некоторые функции erb в моем файле app/javascripts/service-worker.js.erb
. Сценарий регистрации рабочего может выглядеть так:
var registerServiceWorker = function() {
navigator.serviceWorker.register(
'<%= asset_path('service-worker.js') %>',
{ scope: '/assets/' }
)
.then(function() {
console.info('Service worker successfully registered');
})
.catch(function(error) {
console.warn('Cannot register sercie worker. Error = ', error);
});
}
Это не работает; Я никогда не обещаю здесь:
navigator.serviceWorker.ready.then
Я также попытался ./
и /
областей, но я получил эту ошибку:
DOMException: Failed to register a ServiceWorker: The path of the provided scope ('/') is not under the max scope allowed ('/assets/'). Adjust the scope, move the Service Worker script, or use the Service-Worker-Allowed HTTP header to allow the scope.
Если переместить мой service-worker.js
в папку public
, удалите расширение .erb
и изменять масштаб до ./
, все отлично работает, но у меня нет механизма шаблонов.
Любые предложения?
ли serviceworker рельсы камень упоминается в более поздний ответ (http://stackoverflow.com/a/36849798/1299792) устранить барьеры, вы упомянули выше? – Marklar
@Marklar Я раньше не использовал этот драгоценный камень, но, глядя на него на Github, он, похоже, устраняет все барьеры, за исключением того факта, что поддержка браузеров для сервисных работников по-прежнему оставляет желать лучшего. Если бы я строил новое приложение для рельсов, используя сервисных работников, я бы определенно это выяснил. – John