forked from phoenixframework/phoenix_live_dashboard
-
Notifications
You must be signed in to change notification settings - Fork 1
/
dev.exs
125 lines (105 loc) · 3.1 KB
/
dev.exs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# iex -S mix run dev.exs
Logger.configure(level: :debug)
# Configures the endpoint
Application.put_env(:phoenix_live_dashboard, DemoWeb.Endpoint,
url: [host: "localhost"],
secret_key_base: "Hu4qQN3iKzTV4fJxhorPQlA/osH9fAMtbtjVS58PFgfw3ja5Z18Q/WSNR9wP4OfW",
live_view: [signing_salt: "hMegieSe"],
http: [port: System.get_env("PORT") || 4000],
debug_errors: true,
check_origin: false,
pubsub: [name: Demo.PubSub, adapter: Phoenix.PubSub.PG2],
watchers: [
node: [
"node_modules/webpack/bin/webpack.js",
"--mode",
"production",
"--watch-stdin",
cd: "assets"
]
],
live_reload: [
patterns: [
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
~r"lib/phoenix/live_dashboard/(live|views)/.*(ex)$",
~r"lib/phoenix/live_dashboard/templates/.*(ex)$"
]
]
)
defmodule DemoWeb.Telemetry do
import Telemetry.Metrics
def metrics do
[
# Phoenix Metrics
summary("phoenix.endpoint.stop.duration",
unit: {:native, :millisecond}
),
summary("phoenix.router_dispatch.stop.duration",
tags: [:route],
unit: {:native, :millisecond}
),
# VM Metrics
summary("vm.memory.total", unit: {:byte, :kilobyte}),
summary("vm.total_run_queue_lengths.total"),
summary("vm.total_run_queue_lengths.cpu"),
summary("vm.total_run_queue_lengths.io")
]
end
end
defmodule DemoWeb.PageController do
import Plug.Conn
def init(opts), do: opts
def call(conn, :index) do
content(conn, """
<h2>Phoenix LiveDashboard Dev</h2>
<a href="/dashboard" target="_blank">Open Dashboard</a>
""")
end
def call(conn, :hello) do
name = Map.get(conn.params, "name", "friend")
content(conn, "<p>Hello, #{name}!</p>")
end
defp content(conn, content) do
conn
|> put_resp_header("content-type", "text/html")
|> send_resp(200, "<!doctype html><html><body>#{content}</body></html>")
end
end
defmodule DemoWeb.Router do
use Phoenix.Router
import Phoenix.LiveDashboard.Router
pipeline :browser do
plug :fetch_session
plug :fetch_flash
end
scope "/" do
pipe_through :browser
get "/", DemoWeb.PageController, :index
get "/hello", DemoWeb.PageController, :hello
get "/hello/:name", DemoWeb.PageController, :hello
live_dashboard("/dashboard", metrics: DemoWeb.Telemetry)
end
end
defmodule DemoWeb.Endpoint do
use Phoenix.Endpoint, otp_app: :phoenix_live_dashboard
socket "/live", Phoenix.LiveView.Socket
socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket
plug Phoenix.LiveReloader
plug Phoenix.CodeReloader
plug Phoenix.LiveDashboard.RequestLogger,
param_key: "request_logger",
cookie_key: "request_logger"
plug Plug.Session,
store: :cookie,
key: "_live_view_key",
signing_salt: "/VEDsdfsffMnp5"
plug Plug.RequestId
plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint]
plug DemoWeb.Router
end
Application.put_env(:phoenix, :serve_endpoints, true)
Task.start(fn ->
children = [DemoWeb.Endpoint]
{:ok, _} = Supervisor.start_link(children, strategy: :one_for_one)
Process.sleep(:infinity)
end)