Class: Pakyow::Application::Actions::Assets::Public

Inherits:
Object
  • Object
show all
Defined in:
lib/pakyow/application/actions/assets/public.rb

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Public

Pipeline Action that serves files out of your public directory.



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/pakyow/application/actions/assets/public.rb', line 16

def initialize(app)
  @asset_paths = app.state(:asset).map(&:public_path) + app.state(:pack).flat_map { |pack|
    [pack.public_css_path, pack.public_js_path]
  }

  @prefix = if app.is_a?(Plugin)
    Pathname.new(app.class.mount_path)
  else
    Pathname.new("/")
  end
end

Instance Method Details

#call(connection) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/pakyow/application/actions/assets/public.rb', line 28

def call(connection)
  if connection.app.config.assets.public
    public_path = public_path(connection)

    if public?(public_path)
      if mime = MiniMime.lookup_by_filename(public_path)
        connection.set_header("content-type", mime.content_type)
      end

      if connection.app.config.assets.cache && asset?(connection)
        set_cache_headers(connection, public_path)
      end

      connection.body = File.open(public_path)
      connection.halt
    end
  end
end