class Serviceworker::Generators::InstallGenerator

Public Instance Methods

add_offline_html() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 46
def add_offline_html
  template "offline.html", public_dir("offline.html")
end
create_assets() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 12
def create_assets
  template "manifest.json", javascripts_dir("manifest.json.erb")
  template "serviceworker.js", javascripts_dir("serviceworker.js.erb")
  template "serviceworker-companion.js", javascripts_dir("serviceworker-companion.js")
end
create_initializer() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 18
def create_initializer
  template "serviceworker.rb", initializers_dir("serviceworker.rb")
end
update_application_js() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 22
def update_application_js
  ext, directive = detect_js_format
  snippet = "#{directive} require serviceworker-companion\n"
  append_to_file application_js_path(ext), snippet
end
update_application_layout() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 35
def update_application_layout
  layout = detect_layout
  snippet = %(<link rel="manifest" href="/manifest.json" />)
  snippet += %(\n<meta name="apple-mobile-web-app-capable" content="yes">)
  unless layout
    conditional_warn "Could not locate application layout. To insert manifest tags manually, use:\n\n#{snippet}\n"
    return
  end
  insert_into_file layout, snippet, before: "</head>\n"
end
update_precompiled_assets() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 28
def update_precompiled_assets
  snippet = "Rails.configuration.assets.precompile += %w[serviceworker.js manifest.json]\n"
  file_path = initializers_dir("assets.rb")
  FileUtils.touch file_path
  append_to_file file_path, snippet
end

Private Instance Methods

application_js_path(ext) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 52
def application_js_path(ext)
  javascripts_dir("application#{ext}")
end
conditional_warn(warning) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 92
def conditional_warn(warning)
  silenced? or warn warning
end
detect_js_format() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 56
def detect_js_format
  %w[.js .js.erb .coffee .coffee.erb .js.coffee .js.coffee.erb].each do |ext|
    next unless File.exist?(javascripts_dir("application#{ext}"))
    return [ext, "#="] if ext.include?(".coffee")

    return [ext, "//="]
  end
end
detect_layout() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 65
def detect_layout
  layouts = %w[.html.erb .html.haml .html.slim .erb .haml .slim].map do |ext|
    layouts_dir("application#{ext}")
  end
  layouts.find { |layout| File.exist?(layout) }
end
initializers_dir(*paths) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 76
def initializers_dir(*paths)
  join("config", "initializers", *paths)
end
javascripts_dir(*paths) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 72
def javascripts_dir(*paths)
  join("app", "assets", "javascripts", *paths)
end
join(*paths) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 88
def join(*paths)
  File.expand_path(File.join(*paths), destination_root)
end
layouts_dir(*paths) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 80
def layouts_dir(*paths)
  join("app", "views", "layouts", *paths)
end
public_dir(*paths) click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 84
def public_dir(*paths)
  join("public", *paths)
end
silenced?() click to toggle source
# File lib/generators/serviceworker/install_generator.rb, line 96
def silenced?
  ENV["RAILS_ENV"] == "test"
end