Module: Flightdeck::Assets
- Defined in:
- lib/flightdeck/assets.rb
Overview
In-memory view of the precompiled asset manifest committed under
app/assets/flightdeck/. Loaded lazily and memoized: the gem must boot
cleanly in a checkout where rake assets:build has not run yet.
Constant Summary collapse
- CONTENT_TYPES =
{ ".css" => "text/css; charset=utf-8", ".js" => "text/javascript; charset=utf-8" }.freeze
- LOGICAL_NAMES =
%w[flightdeck.css flightdeck.js].freeze
Class Method Summary collapse
-
.by_digested_name ⇒ Object
Reverse index: digested filename => entry.
- .content_type_for(file) ⇒ Object
- .digested_name(logical) ⇒ Object
- .find(digested_name) ⇒ Object
- .manifest ⇒ Object
- .read(digested_name) ⇒ Object
- .root ⇒ Object
Class Method Details
.by_digested_name ⇒ Object
Reverse index: digested filename => entry. The only lookup the controller performs, so a request can never name a file we did not build.
32 33 34 35 36 |
# File 'lib/flightdeck/assets.rb', line 32 def by_digested_name @by_digested_name ||= manifest.each_with_object({}) do |(logical, entry), index| index[entry["file"]] = entry.merge("logical" => logical) end.freeze end |
.content_type_for(file) ⇒ Object
57 58 59 |
# File 'lib/flightdeck/assets.rb', line 57 def content_type_for(file) CONTENT_TYPES.fetch(File.extname(file), "application/octet-stream") end |
.digested_name(logical) ⇒ Object
38 39 40 41 |
# File 'lib/flightdeck/assets.rb', line 38 def digested_name(logical) entry = manifest[logical.to_s] entry && entry["file"] end |
.find(digested_name) ⇒ Object
43 44 45 |
# File 'lib/flightdeck/assets.rb', line 43 def find(digested_name) by_digested_name[digested_name.to_s] end |
.manifest ⇒ Object
23 24 25 26 27 |
# File 'lib/flightdeck/assets.rb', line 23 def manifest return @manifest if defined?(@manifest) && @manifest @manifest = load_manifest end |
.read(digested_name) ⇒ Object
47 48 49 50 51 52 53 54 55 |
# File 'lib/flightdeck/assets.rb', line 47 def read(digested_name) entry = find(digested_name) return nil unless entry path = root.join(entry["file"]) return nil unless path.file? path.binread end |
.root ⇒ Object
19 20 21 |
# File 'lib/flightdeck/assets.rb', line 19 def root @root ||= Pathname.new(File.("../../app/assets/flightdeck", __dir__)) end |