Class: Opal::Sprockets::Server::Index

Inherits:
Object
  • Object
show all
Defined in:
lib/opal/sprockets/server.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, server) ⇒ Index

Returns a new instance of Index.



64
65
66
67
68
# File 'lib/opal/sprockets/server.rb', line 64

def initialize(app, server)
  @app = app
  @server = server
  @index_path = server.index_path
end

Instance Method Details

#call(env) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/opal/sprockets/server.rb', line 70

def call(env)
  if %w[/ /index.html].include? env['PATH_INFO']
    [200, { 'Content-Type' => 'text/html' }, [html]]
  else
    @app.call env
  end
end

#htmlObject

Returns the html content for the root path. Supports ERB



79
80
81
82
83
84
85
86
87
# File 'lib/opal/sprockets/server.rb', line 79

def html
  if @index_path
    raise "index does not exist: #{@index_path}" unless File.exist?(@index_path)
    Tilt.new(@index_path).render(self)
  else
    raise "Main asset path not configured (set 'main' within Opal::Server.new block)" if @server.main.nil?
    source
  end
end

#javascript_include_tag(name) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/opal/sprockets/server.rb', line 89

def javascript_include_tag name
  sprockets = @server.sprockets
  prefix = @server.prefix
  debug = @server.debug

  ::Opal::Sprockets.javascript_include_tag(name, sprockets: sprockets, prefix: prefix, debug: debug)
end

#sourceObject



97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/opal/sprockets/server.rb', line 97

def source
  <<-HTML
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>Opal Server</title>
    </head>
    <body>
      #{javascript_include_tag @server.main}
    </body>
    </html>
  HTML
end