Packages
tableau
0.18.0
0.30.0
0.29.0
0.28.0
0.27.1
0.27.0
0.26.1
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.1
0.20.0
0.19.0
0.18.0
0.17.1
0.17.0
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.0
0.8.0
0.7.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Static site generator for elixir
Current section
Files
Jump to
Current section
Files
lib/tableau_dev_server/router.ex
defmodule TableauDevServer.Router do
@moduledoc false
use Plug.Router, init_mode: :runtime
require Logger
@base_path Path.join("/", Application.compile_env(:tableau, [:config, :base_path], ""))
@not_found ~s'''
<!DOCTYPE html><html lang="en"><head></head><body>Not Found</body></html>
'''
plug :recompile
plug :rerender
plug TableauDevServer.IndexHtml
plug Plug.Static, at: @base_path, from: "_site", cache_control_for_etags: "no-cache"
plug :match
plug :dispatch
get "/ws/index.html" do
conn
|> WebSockAdapter.upgrade(TableauDevServer.Websocket, [], timeout: 60_000)
|> halt()
end
match _ do
Logger.error("File not found: #{conn.request_path}")
send_resp(conn, 404, @not_found)
end
defp recompile(conn, _) do
if conn.request_path != "/ws" do
WebDevUtils.CodeReloader.reload()
end
conn
end
defp rerender(conn, _) do
if conn.request_path != "/ws" do
Mix.Task.rerun("tableau.build", ["--out", "_site"])
end
conn
end
end