Class: Volt::IndexFiles

Inherits:
Object show all
Defined in:
lib/volt/server/rack/index_files.rb

Instance Method Summary collapse

Constructor Details

#initialize(rack_app, volt_app, component_paths, opal_files) ⇒ IndexFiles

Returns a new instance of IndexFiles.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/volt/server/rack/index_files.rb', line 7

def initialize(rack_app, volt_app, component_paths, opal_files)
  @rack_app        = rack_app
  @volt_app        = volt_app
  @component_paths = component_paths
  @opal_files      = opal_files

  @@router = volt_app.router

  @@router.define do
    # Load routes for each component
    component_paths.components.values.flatten.uniq.each do |component_path|
      routes_path = "#{component_path}/config/routes.rb"

      if File.exist?(routes_path)
        route_file = File.read(routes_path)
        instance_eval(route_file, routes_path, 0)
      end
    end
  end
end

Instance Method Details

#call(env) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/volt/server/rack/index_files.rb', line 36

def call(env)
  if route_match?(env['PATH_INFO'])
    [200, { 'Content-Type' => 'text/html; charset=utf-8' }, [html]]
  else
    @rack_app.call env
  end
end

#css_files(*args) ⇒ Object



55
56
57
# File 'lib/volt/server/rack/index_files.rb', line 55

def css_files(*args)
  fail "Deprecation: #css_files is deprecated in config/base/index.html, opal 0.8 required a new format."
end

#css_tagsObject



64
65
66
# File 'lib/volt/server/rack/index_files.rb', line 64

def css_tags
  AssetFiles.from_cache(@volt_app.app_url, 'main', @component_paths).css_tags
end

#htmlObject



44
45
46
47
48
49
# File 'lib/volt/server/rack/index_files.rb', line 44

def html
  index_path = File.expand_path(File.join(Volt.root, 'config/base/index.html'))
  html       = File.read(index_path)

  ERB.new(html, nil, '-').result(binding)
end

#javascript_files(*args) ⇒ Object



51
52
53
# File 'lib/volt/server/rack/index_files.rb', line 51

def javascript_files(*args)
  fail "Deprecation: #javascript_files is deprecated in config/base/index.html, opal 0.8 required a new format."
end

#javascript_tagsObject



59
60
61
62
# File 'lib/volt/server/rack/index_files.rb', line 59

def javascript_tags
  # TODO: Cache somehow, this is being loaded every time
  AssetFiles.from_cache(@volt_app.app_url, 'main', @component_paths).javascript_tags(@volt_app)
end

#route_match?(path) ⇒ Boolean

Returns:



28
29
30
31
32
33
34
# File 'lib/volt/server/rack/index_files.rb', line 28

def route_match?(path)
  params = @@router.url_to_params(path)

  return params if params

  false
end