Module: Appetizer::UI::Assets

Defined in:
lib/appetizer/ui/assets.rb,
lib/appetizer/ui/assets/delivery.rb

Defined Under Namespace

Classes: Delivery

Class Method Summary collapse

Class Method Details

.compiled?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/appetizer/ui/assets.rb', line 47

def self.compiled?
  App.production? or ENV["APPETIZER_USE_COMPILED_ASSETS"]
end

.manifestObject



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/appetizer/ui/assets.rb', line 51

def self.manifest
  return @manifest if defined? @manifest

  @manifest = Hash.new { |h, k| k }

  if File.file? file = "public/assets/manifest.yml"
    require "yaml"
    @manifest.merge! YAML.load File.read file
  end

  @manifest
end

.registered(app) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/appetizer/ui/assets.rb', line 64

def self.registered app
  app.helpers do
    def asset name
      if Appetizer::UI::Assets.compiled?
        return cdnify "/assets/#{Appetizer::UI::Assets.manifest[name]}"
      end

      cdnify "/assets/#{App.assets[name].logical_path}"
    end

    def assets *names
      names.flat_map do |name|
        next unless asset = App.assets[name]
        next asset name if Appetizer::UI::Assets.compiled?

        [asset.dependencies, asset].flatten.map do |dep|
          "/assets/#{dep.logical_path}?body=true"
        end
      end.compact
    end

    def cdnify path
      File.join [ENV["APPETIZER_CDN_URL"], path].compact
    end
  end
end