diff --git a/config/config.exs b/config/config.exs index e9063a646..e8fe1f854 100644 --- a/config/config.exs +++ b/config/config.exs @@ -30,7 +30,8 @@ config :ret, RetWeb.Endpoint, url: [host: "localhost"], secret_key_base: "txlMOtlaY5x3crvOCko4uV5PM29ul3zGo1oBGNO3cDXx+7GHLKqt0gR9qzgThxb5", render_errors: [view: RetWeb.ErrorView, accepts: ~w(html json)], - pubsub: [name: Ret.PubSub, adapter: Phoenix.PubSub.PG2] + pubsub: [name: Ret.PubSub, adapter: Phoenix.PubSub.PG2], + live_view: [signing_salt: "0b777554b23c402fc0388418a66bdf2a8dc5e9f4e09622c307da318f89994448"] # Configures Elixir's Logger config :logger, :console, diff --git a/lib/ret/application.ex b/lib/ret/application.ex index d73829902..eb1272507 100644 --- a/lib/ret/application.ex +++ b/lib/ret/application.ex @@ -66,6 +66,7 @@ defmodule Ret.Application do children = [ # Start the Ecto repository supervisor(Ret.Repo, []), + RetWeb.Telemetry, supervisor(RetWeb.Endpoint, []), supervisor(RetWeb.Presence, []), diff --git a/lib/ret_web.ex b/lib/ret_web.ex index f0a5b937b..d0f990875 100644 --- a/lib/ret_web.ex +++ b/lib/ret_web.ex @@ -24,6 +24,7 @@ defmodule RetWeb do alias RetWeb.Router.Helpers, as: Routes import RetWeb.Gettext import RetWeb.ControllerHelpers + import Phoenix.LiveView.Controller end end @@ -42,6 +43,7 @@ defmodule RetWeb do alias RetWeb.Router.Helpers, as: Routes import RetWeb.ErrorHelpers import RetWeb.Gettext + import Phoenix.LiveView.Helpers end end @@ -50,6 +52,7 @@ defmodule RetWeb do use Phoenix.Router import Plug.Conn import Phoenix.Controller + import Phoenix.LiveView.Router end end diff --git a/lib/ret_web/endpoint.ex b/lib/ret_web/endpoint.ex index dff9480b0..ac54489e5 100644 --- a/lib/ret_web/endpoint.ex +++ b/lib/ret_web/endpoint.ex @@ -5,6 +5,8 @@ defmodule RetWeb.Endpoint do socket("/socket", RetWeb.SessionSocket, websocket: [check_origin: {RetWeb.Endpoint, :allowed_origin?, []}]) + socket("/live", Phoenix.LiveView.Socket) + def get_cors_origins, do: Application.get_env(:ret, RetWeb.Endpoint)[:allowed_origins] |> String.split(",") def get_cors_origin_urls, do: get_cors_origins() |> Enum.filter(&(&1 != "*")) |> Enum.map(&URI.parse/1) @@ -24,6 +26,8 @@ defmodule RetWeb.Endpoint do plug(Phoenix.CodeReloader) end + plug Phoenix.LiveDashboard.RequestLogger, + param_key: "request_logger" plug(Plug.RequestId) plug(Plug.Logger) diff --git a/lib/ret_web/router.ex b/lib/ret_web/router.ex index 4816f9a57..a8e4a6e71 100644 --- a/lib/ret_web/router.ex +++ b/lib/ret_web/router.ex @@ -3,6 +3,8 @@ defmodule RetWeb.Router do use Plug.ErrorHandler use Sentry.Plug + import Phoenix.LiveDashboard.Router + pipeline :secure_headers do plug(:put_secure_browser_headers) plug(RetWeb.Plugs.AddCSP) @@ -69,6 +71,11 @@ defmodule RetWeb.Router do plug RetWeb.Context end + scope "/dashboard", RetWeb do + pipe_through([:browser]) + live_dashboard "/", metrics: RetWeb.Telemetry + end + scope "/health", RetWeb do get("/", HealthController, :index) end diff --git a/lib/ret_web/telemetry.ex b/lib/ret_web/telemetry.ex new file mode 100644 index 000000000..4ddceae0b --- /dev/null +++ b/lib/ret_web/telemetry.ex @@ -0,0 +1,43 @@ +defmodule RetWeb.Telemetry do + use Supervisor + import Telemetry.Metrics + + def start_link(arg) do + Supervisor.start_link(__MODULE__, arg, name: __MODULE__) + end + + def init(_arg) do + children = [ + {:telemetry_poller, measurements: periodic_measurements(), period: 10_000} + ] + + Supervisor.init(children, strategy: :one_for_one) + end + + def metrics do + [ + # Phoenix Metrics + summary("phoenix.endpoint.stop.duration", + unit: {:native, :millisecond} + ), + summary("phoenix.router_dispatch.stop.duration", + tags: [:route], + unit: {:native, :millisecond} + ), + #Absinthe Metrics + summary("absinthe.execute.operation.stop.duration"), + summary("absinthe.resolve.field.stop.duration"), + summary("absinthe.middleware.batch.stop.duration"), + + # 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 + + defp periodic_measurements do + [] + end +end diff --git a/mix.exs b/mix.exs index ac7cff47a..19fd4846e 100644 --- a/mix.exs +++ b/mix.exs @@ -34,23 +34,27 @@ defmodule Ret.Mixfile do defp deps do [ {:ecto_boot_migration, "~> 0.2.0"}, - {:phoenix, "~> 1.4.0"}, - {:phoenix_pubsub, "~> 1.1"}, + {:phoenix, "~> 1.5.0"}, + {:phoenix_pubsub, "~> 2.0"}, {:phoenix_ecto, "~> 4.0"}, {:plug, "~> 1.7"}, # Avoid 3.4.0 for now bc https://github.com/elixir-ecto/ecto/issues/3246 {:ecto, "~> 3.3.0"}, {:ecto_sql, "~> 3.3.0"}, - {:absinthe, "~> 1.4"}, + {:absinthe, "~> 1.5"}, {:dataloader, "~> 1.0.0"}, - {:absinthe_plug, "~> 1.4"}, - {:absinthe_phoenix, "~> 1.4.0"}, + {:absinthe_plug, "~> 1.5"}, + {:absinthe_phoenix, "~> 2.0"}, {:postgrex, ">= 0.0.0"}, {:phoenix_html, "~> 2.13"}, + {:phoenix_live_view, "~> 0.14.4"}, {:phoenix_live_reload, "~> 1.2", only: :dev}, + {:telemetry_metrics, "~> 0.4"}, + {:telemetry_poller, "~> 0.4"}, + {:phoenix_live_dashboard, "~> 0.2.7"}, {:gettext, "~> 0.17"}, - {:cowboy, "~> 2.6.3"}, - {:plug_cowboy, "~> 2.0"}, + {:cowboy, "~> 2.8"}, + {:plug_cowboy, "~> 2.1"}, {:distillery, "~> 2.0"}, {:peerage, "~> 1.0"}, {:httpoison, "~> 1.5"}, diff --git a/mix.lock b/mix.lock index 06b363ac9..f882f8b62 100644 --- a/mix.lock +++ b/mix.lock @@ -1,8 +1,8 @@ %{ - "absinthe": {:hex, :absinthe, "1.4.16", "0933e4d9f12652b12115d5709c0293a1bf78a22578032e9ad0dad4efee6b9eb1", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "076b8bd9552f4966ba1242f412f6c439b731169a36a0ddaaffcd3893828f5bf6"}, + "absinthe": {:hex, :absinthe, "1.5.2", "2f9449b0c135ea61c09c11968d3d4fe6abd5bed38cf9be1c6d6b7c5ec858cfa0", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "669c84879629b7fffdc6cda9361ab9c81c9c7691e65418ba089b912a227963ac"}, "absinthe_ecto": {:hex, :absinthe_ecto, "0.1.3", "420b68129e79fe4571a4838904ba03e282330d335da47729ad52ffd7b8c5fcb1", [:mix], [{:absinthe, "~> 1.3.0 or ~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "355b9db34abfab96ae1e025434b66e11002babcf4fe6b7144d26ff7548985f52"}, - "absinthe_phoenix": {:hex, :absinthe_phoenix, "1.4.4", "af3b7b44483121f756ea0ec75a536b74f67cdd62ec6a34b9e58df1fb4662389e", [:mix], [{:absinthe, "~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.4.0", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "54118c32ca00257b3cd3e616b3f9cee99e493d2399528334cbb5457e470400d3"}, - "absinthe_plug": {:hex, :absinthe_plug, "1.4.7", "939b6b9e1c7abc6b399a5b49faa690a1fbb55b195c670aa35783b14b08ccec7a", [:mix], [{:absinthe, "~> 1.4.11", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.2 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "c6ecb0e56a963287ac252d0563e5b33b84b300ce8203d3d1410dddb5dc6d08e9"}, + "absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.0", "01c6a90af0ca12ee08d0fb93e23f9890d75bb6d3027f49ee4383bc03058ef5c3", [:mix], [{:absinthe, "~> 1.5.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5.0", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.5", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "7ffbfe9fb82a14cafb78885cc2cef4f9d454bbbe2c95eec12b5463f5a20d1020"}, + "absinthe_plug": {:hex, :absinthe_plug, "1.5.0", "018ef544cf577339018d1f482404b4bed762e1b530c78be9de4bbb88a6f3a805", [:mix], [{:absinthe, "~> 1.5.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.2 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "4c160f4ce9a1233a4219a42de946e4e05d0e8733537cd5d8d20e7d4ef8d4b7c7"}, "artificery": {:hex, :artificery, "0.4.2", "3ded6e29e13113af52811c72f414d1e88f711410cac1b619ab3a2666bbd7efd4", [:mix], [], "hexpm", "514586f4312ef3709a3ccbd8e55f69455add235c1729656687bb781d10d0afdb"}, "bamboo": {:hex, :bamboo, "1.4.0", "7b9201c49a843e4802061cf45692405b2c00efcf1cebf8b7b64f015ead072392", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "b9cad03bf38c7f37b6308876039355665b6ce09fefb46dc529cef4def912cffa"}, "bamboo_smtp": {:hex, :bamboo_smtp, "1.7.0", "f0d213e18ced1f08b551a72221e9b8cfbf23d592b684e9aa1ef5250f4943ef9b", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 0.14.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "6093e44cf93ae70c1e06637a80f71cb24b7a848777b20a52f7036431d7e02249"}, @@ -14,8 +14,8 @@ "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm", "4a0850c9be22a43af9920a71ab17c051f5f7d45c209e40269a1938832510e4d9"}, "cors_plug": {:hex, :cors_plug, "2.0.2", "2b46083af45e4bc79632bd951550509395935d3e7973275b2b743bd63cc942ce", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f0d0e13f71c51fd4ef8b2c7e051388e4dfb267522a83a22392c856de7e46465f"}, - "cowboy": {:hex, :cowboy, "2.6.3", "99aa50e94e685557cad82e704457336a453d4abcb77839ad22dbe71f311fcc06", [:rebar3], [{:cowlib, "~> 2.7.3", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "e5580029080f3f1ad17436fb97b0d5ed2ed4e4815a96bac36b5a992e20f58db6"}, - "cowlib": {:hex, :cowlib, "2.7.3", "a7ffcd0917e6d50b4d5fb28e9e2085a0ceb3c97dea310505f7460ff5ed764ce9", [:rebar3], [], "hexpm", "1e1a3d176d52daebbecbbcdfd27c27726076567905c2a9d7398c54da9d225761"}, + "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, + "cowlib": {:hex, :cowlib, "2.9.1", "61a6c7c50cf07fdd24b2f45b89500bb93b6686579b069a89f88cb211e1125c78", [:rebar3], [], "hexpm", "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170"}, "credo": {:hex, :credo, "1.3.2", "08d456dcf3c24da162d02953fb07267e444469d8dad3a2ae47794938ea467b3a", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b11d28cce1f1f399dddffd42d8e21dcad783309e230f84b70267b1a5546468b6"}, "crontab": {:hex, :crontab, "1.1.10", "dc9bb1f4299138d47bce38341f5dcbee0aa6c205e864fba7bc847f3b5cb48241", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "1347d889d1a0eda997990876b4894359e34bfbbd688acbb0ba28a2795ca40685"}, "dataloader": {:hex, :dataloader, "1.0.7", "58351b335673cf40601429bfed6c11fece6ce7ad169b2ac0f0fe83e716587391", [:mix], [{:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "12bf66478e4a5085d09dc96932d058c206ee8c219cc7691d12a40dc35c8cefaa"}, @@ -49,19 +49,22 @@ "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, "mix_test_watch": {:hex, :mix_test_watch, "1.0.2", "34900184cbbbc6b6ed616ed3a8ea9b791f9fd2088419352a6d3200525637f785", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "47ac558d8b06f684773972c6d04fcc15590abdb97aeb7666da19fcbfdc441a07"}, "mutex": {:hex, :mutex, "1.1.3", "d7e19f96fe19d6d97583bf12ca1ec182bbf14619b7568592cc461135de1c3b81", [:mix], [], "hexpm"}, + "nimble_parsec": {:hex, :nimble_parsec, "0.6.0", "32111b3bf39137144abd7ba1cce0914533b2d16ef35e8abc5ec8be6122944263", [:mix], [], "hexpm", "27eac315a94909d4dc68bc07a4a83e06c8379237c5ea528a9acff4ca1c873c52"}, "oauther": {:hex, :oauther, "1.1.1", "7d8b16167bb587ecbcddd3f8792beb9ec3e7b65c1f8ebd86b8dd25318d535752", [:mix], [], "hexpm", "9374f4302045321874cccdc57eb975893643bd69c3b22bf1312dab5f06e5788e"}, "observer_cli": {:hex, :observer_cli, "1.5.3", "d42e20054116c49d5242d3ff9e1913acccebe6015f449d6e312a5bc160e79a62", [:mix, :rebar3], [{:recon, "~>2.5.0", [hex: :recon, repo: "hexpm", optional: false]}], "hexpm", "3d2de7a710b9bed4cfbdae0419d98b1985634bd8cc1f26ef9576c2eb9aa6b35e"}, "open_graph": {:hex, :open_graph, "0.0.4", "0790882d5735286abc8391b37d2707613ecd74ebdc5340be664d3df345cd8cae", [:mix], [{:httpoison, "~> 1.5", [hex: :httpoison, repo: "hexpm", optional: false]}], "hexpm", "a22a8ddaf9f881af38d519ced463627c37a8dea49a35cc27efdb9f2b839b9049"}, "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, "peerage": {:hex, :peerage, "1.0.3", "945c3dfc407215b89682c65198d004028df0fa772bfea4d2cc9bb4e39e8be9a0", [:mix], [{:deferred_config, "~> 0.1.1", [hex: :deferred_config, repo: "hexpm", optional: false]}], "hexpm", "c9a3316be955f65da1ec39ef891b4c15f2f13bec7bd8d84ef3cdc9fd633d889b"}, - "phoenix": {:hex, :phoenix, "1.4.16", "2cbbe0c81e6601567c44cc380c33aa42a1372ac1426e3de3d93ac448a7ec4308", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "856cc1a032fa53822737413cf51aa60e750525d7ece7d1c0576d90d7c0f05c24"}, + "phoenix": {:hex, :phoenix, "1.5.4", "0fca9ce7e960f9498d6315e41fcd0c80bfa6fbeb5fa3255b830c67fdfb7e703f", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4e516d131fde87b568abd62e1b14aa07ba7d5edfd230bab4e25cc9dedbb39135"}, "phoenix_ecto": {:hex, :phoenix_ecto, "4.1.0", "a044d0756d0464c5a541b4a0bf4bcaf89bffcaf92468862408290682c73ae50d", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.9", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "c5e666a341ff104d0399d8f0e4ff094559b2fde13a5985d4cb5023b2c2ac558b"}, - "phoenix_html": {:hex, :phoenix_html, "2.14.1", "7dabafadedb552db142aacbd1f11de1c0bbaa247f90c449ca549d5e30bbc66b4", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "536d5200ad37fecfe55b3241d90b7a8c3a2ca60cd012fc065f776324fa9ab0a9"}, + "phoenix_html": {:hex, :phoenix_html, "2.14.2", "b8a3899a72050f3f48a36430da507dd99caf0ac2d06c77529b1646964f3d563e", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "58061c8dfd25da5df1ea0ca47c972f161beb6c875cd293917045b92ffe1bf617"}, + "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.2.7", "21564144897109ac486518651fecd09403a4d9df4d8432e7dcdf156df6a6a31a", [:mix], [{:phoenix_html, "~> 2.14.1 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.14.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.4.0 or ~> 0.5.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "2204c2c6755da7b39a21e312253b93d977cc846c85df8a6c0d9f9505cd8bf15b"}, "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.2.1", "274a4b07c4adbdd7785d45a8b0bb57634d0b4f45b18d2c508b26c0344bd59b8f", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "41b4103a2fa282cfd747d377233baf213c648fdcc7928f432937676532490eee"}, - "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm", "1f13f9f0f3e769a667a6b6828d29dec37497a082d195cc52dbef401a9b69bf38"}, - "plug": {:hex, :plug, "1.10.0", "6508295cbeb4c654860845fb95260737e4a8838d34d115ad76cd487584e2fc4d", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "422a9727e667be1bf5ab1de03be6fa0ad67b775b2d84ed908f3264415ef29d4a"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "0.14.4", "7286a96287cd29b594ce4a7314249cea7311af04a06c0fa3e50932e188e73996", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.3", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 0.5", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc4f8cf205c784eeccee35de8afbfeb995ce5511ac4839db63d6d67a5ba091d1"}, + "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, + "plug": {:hex, :plug, "1.10.3", "c9cebe917637d8db0e759039cc106adca069874e1a9034fd6e3fdd427fd3c283", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "01f9037a2a1de1d633b5a881101e6a444bcabb1d386ca1e00bb273a1f1d9d939"}, "plug_attack": {:hex, :plug_attack, "0.4.2", "0413707429210b890e21758902ac720a4e06c0350453df9954da3d4ca4bac5d8", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e9a2b1786e1d180d295b5974d337f0952de007eaf081f11d075aa1be65347288"}, - "plug_cowboy": {:hex, :plug_cowboy, "2.1.2", "8b0addb5908c5238fac38e442e81b6fcd32788eaa03246b4d55d147c47c5805e", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "7d722581ce865a237e14da6d946f92704101740a256bd13ec91e63c0b122fc70"}, + "plug_cowboy": {:hex, :plug_cowboy, "2.3.0", "149a50e05cb73c12aad6506a371cd75750c0b19a32f81866e1a323dda9e0e99d", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "bc595a1870cef13f9c1e03df56d96804db7f702175e4ccacdb8fc75c02a7b97e"}, "plug_crypto": {:hex, :plug_crypto, "1.1.2", "bdd187572cc26dbd95b87136290425f2b580a116d3fb1f564216918c9730d227", [:mix], [], "hexpm", "6b8b608f895b6ffcfad49c37c7883e8df98ae19c6a28113b02aa1e9c5b22d6b5"}, "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"}, "postgrex": {:hex, :postgrex, "0.15.3", "5806baa8a19a68c4d07c7a624ccdb9b57e89cbc573f1b98099e3741214746ae4", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "4737ce62a31747b4c63c12b20c62307e51bb4fcd730ca0c32c280991e0606c90"}, @@ -78,7 +81,9 @@ "slugger": {:hex, :slugger, "0.3.0", "efc667ab99eee19a48913ccf3d038b1fb9f165fa4fbf093be898b8099e61b6ed", [:mix], [], "hexpm", "20d0ded0e712605d1eae6c5b4889581c3460d92623a930ddda91e0e609b5afba"}, "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, "statix": {:hex, :statix, "1.4.0", "c822abd1e60e62828e8460e932515d0717aa3c089b44cc3f795d43b94570b3a8", [:mix], [], "hexpm", "507373cc80925a9b6856cb14ba17f6125552434314f6613c907d295a09d1a375"}, - "telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm", "4738382e36a0a9a2b6e25d67c960e40e1a2c95560b9f936d8e29de8cd858480f"}, + "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, + "telemetry_metrics": {:hex, :telemetry_metrics, "0.5.0", "1b796e74add83abf844e808564275dfb342bcc930b04c7577ab780e262b0d998", [:mix], [{:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "31225e6ce7a37a421a0a96ec55244386aec1c190b22578bd245188a4a33298fd"}, + "telemetry_poller": {:hex, :telemetry_poller, "0.5.1", "21071cc2e536810bac5628b935521ff3e28f0303e770951158c73eaaa01e962a", [:rebar3], [{:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4cab72069210bc6e7a080cec9afffad1b33370149ed5d379b81c7c5f0c663fd4"}, "temp": {:hex, :temp, "0.4.7", "2c78482cc2294020a4bc0c95950b907ff386523367d4e63308a252feffbea9f2", [:mix], [], "hexpm", "6af19e7d6a85a427478be1021574d1ae2a1e1b90882586f06bde76c63cd03e0d"}, "the_end": {:git, "https://github.com/mozillareality/the_end.git", "978ce97bec3ec754182fa72e24a82eab935a5853", [branch: "bug/phoenix-14"]}, "timex": {:hex, :timex, "3.6.1", "efdf56d0e67a6b956cc57774353b0329c8ab7726766a11547e529357ffdc1d56", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "f354efb2400dd7a80fd9eb6c8419068c4f632da4ac47f3d8822d6e33f08bc852"}, diff --git a/upgrade_notes.org b/upgrade_notes.org new file mode 100644 index 000000000..544d2fa1a --- /dev/null +++ b/upgrade_notes.org @@ -0,0 +1,647 @@ +* I went to upgrade phoenix from 1.4.x to 1.5.x +Goal is to support phoenix_live_view / phoenix_live_dashboard for Telemetry.Metrics in absinthe +** I upgraded phx_new + + [jomb@jlomb2 ~]$ mix archive.uninstall phx_new + Are you sure you want to uninstall /home/jomb/.mix/archives/phx_new-1.4.12? [Yn] y + [jomb@jlomb2 ~]$ mix archive.install hex phx_new 1.5.0 + Resolving Hex dependencies... + Dependency resolution completed: + New: + phx_new 1.5.0 + * Getting phx_new (Hex package) + All dependencies are up to date + Compiling 10 files (.ex) + Generated phx_new app + Generated archive "phx_new-1.5.0.ez" with MIX_ENV=prod + Are you sure you want to install "phx_new-1.5.0.ez"? [Yn] y + * creating /home/jomb/.mix/archives/phx_new-1.5.0 + [jomb@jlomb2 ~]$ +** I upgraded a handful of packages: +*** I figured out what to update just by running into errors along the way: +**** [jomb@jlomb2 reticulum]$ mix deps.get + Resolving Hex dependencies... + Dependency resolution completed: + Unchanged: + absinthe 1.4.16 + absinthe_phoenix 1.4.4 + absinthe_plug 1.4.7 + artificery 0.4.2 + bamboo 1.4.0 + bamboo_smtp 1.7.0 + bunt 0.2.0 + cachex 3.2.0 + canada 1.0.2 + canary 1.1.1 + certifi 2.5.1 + combine 0.10.0 + connection 1.0.4 + cors_plug 2.0.2 + cowboy 2.6.3 + cowlib 2.7.3 + credo 1.3.2 + crontab 1.1.10 + dataloader 1.0.7 + db_connection 2.2.1 + decimal 1.8.1 + deferred_config 0.1.1 + distillery 2.1.1 + ecto 3.3.4 + ecto_autoslug_field 2.0.1 + ecto_boot_migration 0.2.0 + ecto_enum 1.4.0 + ecto_sql 3.3.4 + eternal 1.2.1 + ex2ms 1.6.0 + ex_json_schema 0.7.4 + ex_rated 1.3.3 + file_system 0.2.8 + gen_smtp 0.14.0 + gen_stage 0.14.3 + gettext 0.17.4 + guardian 1.2.1 + hackney 1.15.2 + httpoison 1.6.2 + idna 6.0.0 + jason 1.1.2 + jose 1.10.1 + jumper 1.0.1 + metrics 1.0.1 + mime 1.3.1 + mimerl 1.2.0 + mix_test_watch 1.0.2 + oauther 1.1.1 + observer_cli 1.5.3 + open_graph 0.0.4 + parse_trans 3.3.0 + peerage 1.0.3 + phoenix 1.4.16 + phoenix_ecto 4.1.0 + phoenix_html 2.14.1 + phoenix_live_dashboard 0.2.4 + phoenix_live_reload 1.2.1 + phoenix_live_view 0.12.1 + phoenix_pubsub 1.1.2 + plug 1.10.0 + plug_attack 0.4.2 + plug_cowboy 2.1.2 + plug_crypto 1.1.2 + poison 3.1.0 + postgrex 0.15.3 + quantum 2.2.7 + ranch 1.7.1 + recon 2.5.0 + retry 0.14.0 + scrivener 2.7.0 + scrivener_ecto 2.3.0 + secure_random 0.5.1 + sentry 6.4.2 + sleeplocks 1.1.1 + slugger 0.3.0 + ssl_verify_fun 1.1.5 + statix 1.4.0 + telemetry 0.4.1 + telemetry_metrics 0.5.0 + telemetry_poller 0.5.1 + temp 0.4.7 + timex 3.6.1 + toml 0.6.1 + tzdata 1.0.3 + ua_parser 1.8.0 + unicode_util_compat 0.4.1 + unsafe 1.0.1 + web_push_encryption 0.2.1 + yamerl 0.7.0 + * Updating phoenix (Hex package) + * Updating plug (Hex package) + * Updating plug_cowboy (Hex package) + * Updating telemetry (Hex package) +**** [jomb@jlomb2 reticulum]$ mix deps.get + Resolving Hex dependencies... + + Failed to use "phoenix_pubsub" (version 2.0.0) because + absinthe_phoenix (version 1.4.4) requires ~> 1.0 + phoenix (versions 1.5.0 to 1.5.4) requires ~> 2.0 + mix.exs specifies ~> 2.0 + + ** (Mix) Hex dependency resolution failed, change the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true} +**** [jomb@jlomb2 reticulum]$ mix deps.get + Resolving Hex dependencies... + + Failed to use "absinthe" (versions 1.5.0 to 1.5.2) because + absinthe_plug (version 1.4.7) requires ~> 1.4.11 + mix.exs specifies ~> 1.5 + + ** (Mix) Hex dependency resolution failed, change the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true} +**** [jomb@jlomb2 reticulum]$ mix deps.get + Resolving Hex dependencies... + + Failed to use "phoenix_pubsub" (version 2.0.0) because + absinthe_phoenix (version 1.5.0) requires ~> 1.0 + phoenix (versions 1.5.0 to 1.5.4) requires ~> 2.0 + mix.exs specifies ~> 2.0 + + ** (Mix) Hex dependency resolution failed, change the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true} +**** [jomb@jlomb2 reticulum]$ mix deps.get + Resolving Hex dependencies... + + Failed to use "cowboy" (version 2.6.3) because + deps/reverse_proxy_plug/mix.exs requires ~> 2.4 + plug_cowboy (versions 2.2.0 to 2.3.0) requires ~> 2.7 + mix.exs specifies ~> 2.6.3 + + ** (Mix) Hex dependency resolution failed, change the version requirements of your dependencies or unlock them (by using mix deps.update or mix deps.unlock). If you are unable to resolve the conflicts you can try overriding with {:dependency, "~> 1.0", override: true} +**** [jomb@jlomb2 reticulum]$ mix deps.get + Resolving Hex dependencies... + Dependency resolution completed: + Unchanged: + artificery 0.4.2 + bamboo 1.4.0 + bamboo_smtp 1.7.0 + bunt 0.2.0 + cachex 3.2.0 + canada 1.0.2 + canary 1.1.1 + certifi 2.5.1 + combine 0.10.0 + connection 1.0.4 + cors_plug 2.0.2 + credo 1.3.2 + crontab 1.1.10 + dataloader 1.0.7 + db_connection 2.2.1 + decimal 1.8.1 + deferred_config 0.1.1 + distillery 2.1.1 + ecto 3.3.4 + ecto_autoslug_field 2.0.1 + ecto_boot_migration 0.2.0 + ecto_enum 1.4.0 + ecto_sql 3.3.4 + eternal 1.2.1 + ex2ms 1.6.0 + ex_json_schema 0.7.4 + ex_rated 1.3.3 + file_system 0.2.8 + gen_smtp 0.14.0 + gen_stage 0.14.3 + gettext 0.17.4 + guardian 1.2.1 + hackney 1.15.2 + httpoison 1.6.2 + idna 6.0.0 + jason 1.1.2 + jose 1.10.1 + jumper 1.0.1 + metrics 1.0.1 + mime 1.3.1 + mimerl 1.2.0 + mix_test_watch 1.0.2 + oauther 1.1.1 + observer_cli 1.5.3 + open_graph 0.0.4 + parse_trans 3.3.0 + peerage 1.0.3 + phoenix_ecto 4.1.0 + phoenix_live_dashboard 0.2.4 + phoenix_live_reload 1.2.1 + phoenix_live_view 0.12.1 + plug_attack 0.4.2 + plug_crypto 1.1.2 + poison 3.1.0 + postgrex 0.15.3 + quantum 2.2.7 + ranch 1.7.1 + recon 2.5.0 + retry 0.14.0 + scrivener 2.7.0 + scrivener_ecto 2.3.0 + secure_random 0.5.1 + sentry 6.4.2 + sleeplocks 1.1.1 + slugger 0.3.0 + ssl_verify_fun 1.1.5 + statix 1.4.0 + telemetry_metrics 0.5.0 + telemetry_poller 0.5.1 + temp 0.4.7 + timex 3.6.1 + toml 0.6.1 + tzdata 1.0.3 + ua_parser 1.8.0 + unicode_util_compat 0.4.1 + unsafe 1.0.1 + web_push_encryption 0.2.1 + yamerl 0.7.0 + Upgraded: + absinthe 1.4.16 => 1.5.2 + absinthe_phoenix 1.4.4 => 2.0.0 (major) + absinthe_plug 1.4.7 => 1.5.0 + cowboy 2.6.3 => 2.8.0 + cowlib 2.7.3 => 2.9.1 + phoenix 1.4.16 => 1.5.4 + phoenix_html 2.14.1 => 2.14.2 + phoenix_pubsub 1.1.2 => 2.0.0 (major) + plug 1.10.0 => 1.10.3 + plug_cowboy 2.1.2 => 2.3.0 + telemetry 0.4.1 => 0.4.2 + New: + nimble_parsec 0.6.0 + * Updating phoenix (Hex package) + * Updating phoenix_pubsub (Hex package) + * Updating plug (Hex package) + * Updating absinthe (Hex package) + * Updating absinthe_plug (Hex package) + * Updating absinthe_phoenix (Hex package) + * Updating phoenix_html (Hex package) + * Updating cowboy (Hex package) + * Updating plug_cowboy (Hex package) + * Updating telemetry (Hex package) + * Updating cowlib (Hex package) + * Getting nimble_parsec (Hex package) + +*** The diff was +#+BEGIN_EXAMPLE diff +modified mix.exs +@@ -34,17 +34,17 @@ defmodule Ret.Mixfile do + defp deps do + [ + {:ecto_boot_migration, "~> 0.2.0"}, +- {:phoenix, "~> 1.4.0"}, +- {:phoenix_pubsub, "~> 1.1"}, ++ {:phoenix, "~> 1.5.0"}, ++ {:phoenix_pubsub, "~> 2.0"}, + {:phoenix_ecto, "~> 4.0"}, + {:plug, "~> 1.7"}, + # Avoid 3.4.0 for now bc https://github.com/elixir-ecto/ecto/issues/3246 + {:ecto, "~> 3.3.0"}, + {:ecto_sql, "~> 3.3.0"}, +- {:absinthe, "~> 1.4"}, ++ {:absinthe, "~> 1.5"}, + {:dataloader, "~> 1.0.0"}, +- {:absinthe_plug, "~> 1.4"}, +- {:absinthe_phoenix, "~> 1.4.0"}, ++ {:absinthe_plug, "~> 1.5"}, ++ {:absinthe_phoenix, "~> 2.0"}, + {:postgrex, ">= 0.0.0"}, + {:phoenix_html, "~> 2.13"}, + {:phoenix_live_view, "~> 0.12"}, +@@ -53,8 +53,8 @@ defmodule Ret.Mixfile do + {:telemetry_poller, "~> 0.4"}, + {:phoenix_live_dashboard, "~> 0.1"}, + {:gettext, "~> 0.17"}, +- {:cowboy, "~> 2.6.3"}, +- {:plug_cowboy, "~> 2.0"}, ++ {:cowboy, "~> 2.8"}, ++ {:plug_cowboy, "~> 2.1"}, + {:distillery, "~> 2.0"}, + {:peerage, "~> 1.0"}, + {:httpoison, "~> 1.5"}, +modified mix.lock +@@ -1,8 +1,8 @@ + %{ +- "absinthe": {:hex, :absinthe, "1.4.16", "0933e4d9f12652b12115d5709c0293a1bf78a22578032e9ad0dad4efee6b9eb1", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "076b8bd9552f4966ba1242f412f6c439b731169a36a0ddaaffcd3893828f5bf6"}, ++ "absinthe": {:hex, :absinthe, "1.5.2", "2f9449b0c135ea61c09c11968d3d4fe6abd5bed38cf9be1c6d6b7c5ec858cfa0", [:mix], [{:dataloader, "~> 1.0.0", [hex: :dataloader, repo: "hexpm", optional: true]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "669c84879629b7fffdc6cda9361ab9c81c9c7691e65418ba089b912a227963ac"}, + "absinthe_ecto": {:hex, :absinthe_ecto, "0.1.3", "420b68129e79fe4571a4838904ba03e282330d335da47729ad52ffd7b8c5fcb1", [:mix], [{:absinthe, "~> 1.3.0 or ~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: false]}], "hexpm", "355b9db34abfab96ae1e025434b66e11002babcf4fe6b7144d26ff7548985f52"}, +- "absinthe_phoenix": {:hex, :absinthe_phoenix, "1.4.4", "af3b7b44483121f756ea0ec75a536b74f67cdd62ec6a34b9e58df1fb4662389e", [:mix], [{:absinthe, "~> 1.4.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.4.0", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "54118c32ca00257b3cd3e616b3f9cee99e493d2399528334cbb5457e470400d3"}, +- "absinthe_plug": {:hex, :absinthe_plug, "1.4.7", "939b6b9e1c7abc6b399a5b49faa690a1fbb55b195c670aa35783b14b08ccec7a", [:mix], [{:absinthe, "~> 1.4.11", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.2 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "c6ecb0e56a963287ac252d0563e5b33b84b300ce8203d3d1410dddb5dc6d08e9"}, ++ "absinthe_phoenix": {:hex, :absinthe_phoenix, "2.0.0", "01c6a90af0ca12ee08d0fb93e23f9890d75bb6d3027f49ee4383bc03058ef5c3", [:mix], [{:absinthe, "~> 1.5.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:absinthe_plug, "~> 1.5.0", [hex: :absinthe_plug, repo: "hexpm", optional: false]}, {:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.5", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}], "hexpm", "7ffbfe9fb82a14cafb78885cc2cef4f9d454bbbe2c95eec12b5463f5a20d1020"}, ++ "absinthe_plug": {:hex, :absinthe_plug, "1.5.0", "018ef544cf577339018d1f482404b4bed762e1b530c78be9de4bbb88a6f3a805", [:mix], [{:absinthe, "~> 1.5.0", [hex: :absinthe, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.2 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "4c160f4ce9a1233a4219a42de946e4e05d0e8733537cd5d8d20e7d4ef8d4b7c7"}, + "artificery": {:hex, :artificery, "0.4.2", "3ded6e29e13113af52811c72f414d1e88f711410cac1b619ab3a2666bbd7efd4", [:mix], [], "hexpm", "514586f4312ef3709a3ccbd8e55f69455add235c1729656687bb781d10d0afdb"}, + "bamboo": {:hex, :bamboo, "1.4.0", "7b9201c49a843e4802061cf45692405b2c00efcf1cebf8b7b64f015ead072392", [:mix], [{:hackney, ">= 1.13.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "b9cad03bf38c7f37b6308876039355665b6ce09fefb46dc529cef4def912cffa"}, + "bamboo_smtp": {:hex, :bamboo_smtp, "1.7.0", "f0d213e18ced1f08b551a72221e9b8cfbf23d592b684e9aa1ef5250f4943ef9b", [:mix], [{:bamboo, "~> 1.2", [hex: :bamboo, repo: "hexpm", optional: false]}, {:gen_smtp, "~> 0.14.0", [hex: :gen_smtp, repo: "hexpm", optional: false]}], "hexpm", "6093e44cf93ae70c1e06637a80f71cb24b7a848777b20a52f7036431d7e02249"}, +@@ -14,8 +14,8 @@ + "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, + "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm", "4a0850c9be22a43af9920a71ab17c051f5f7d45c209e40269a1938832510e4d9"}, + "cors_plug": {:hex, :cors_plug, "2.0.2", "2b46083af45e4bc79632bd951550509395935d3e7973275b2b743bd63cc942ce", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f0d0e13f71c51fd4ef8b2c7e051388e4dfb267522a83a22392c856de7e46465f"}, +- "cowboy": {:hex, :cowboy, "2.6.3", "99aa50e94e685557cad82e704457336a453d4abcb77839ad22dbe71f311fcc06", [:rebar3], [{:cowlib, "~> 2.7.3", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "e5580029080f3f1ad17436fb97b0d5ed2ed4e4815a96bac36b5a992e20f58db6"}, +- "cowlib": {:hex, :cowlib, "2.7.3", "a7ffcd0917e6d50b4d5fb28e9e2085a0ceb3c97dea310505f7460ff5ed764ce9", [:rebar3], [], "hexpm", "1e1a3d176d52daebbecbbcdfd27c27726076567905c2a9d7398c54da9d225761"}, ++ "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, ++ "cowlib": {:hex, :cowlib, "2.9.1", "61a6c7c50cf07fdd24b2f45b89500bb93b6686579b069a89f88cb211e1125c78", [:rebar3], [], "hexpm", "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170"}, + "credo": {:hex, :credo, "1.3.2", "08d456dcf3c24da162d02953fb07267e444469d8dad3a2ae47794938ea467b3a", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b11d28cce1f1f399dddffd42d8e21dcad783309e230f84b70267b1a5546468b6"}, + "crontab": {:hex, :crontab, "1.1.10", "dc9bb1f4299138d47bce38341f5dcbee0aa6c205e864fba7bc847f3b5cb48241", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "1347d889d1a0eda997990876b4894359e34bfbbd688acbb0ba28a2795ca40685"}, + "dataloader": {:hex, :dataloader, "1.0.7", "58351b335673cf40601429bfed6c11fece6ce7ad169b2ac0f0fe83e716587391", [:mix], [{:ecto, ">= 0.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "12bf66478e4a5085d09dc96932d058c206ee8c219cc7691d12a40dc35c8cefaa"}, +@@ -49,21 +49,22 @@ + "mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"}, + "mix_test_watch": {:hex, :mix_test_watch, "1.0.2", "34900184cbbbc6b6ed616ed3a8ea9b791f9fd2088419352a6d3200525637f785", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "47ac558d8b06f684773972c6d04fcc15590abdb97aeb7666da19fcbfdc441a07"}, + "mutex": {:hex, :mutex, "1.1.3", "d7e19f96fe19d6d97583bf12ca1ec182bbf14619b7568592cc461135de1c3b81", [:mix], [], "hexpm"}, ++ "nimble_parsec": {:hex, :nimble_parsec, "0.6.0", "32111b3bf39137144abd7ba1cce0914533b2d16ef35e8abc5ec8be6122944263", [:mix], [], "hexpm", "27eac315a94909d4dc68bc07a4a83e06c8379237c5ea528a9acff4ca1c873c52"}, + "oauther": {:hex, :oauther, "1.1.1", "7d8b16167bb587ecbcddd3f8792beb9ec3e7b65c1f8ebd86b8dd25318d535752", [:mix], [], "hexpm", "9374f4302045321874cccdc57eb975893643bd69c3b22bf1312dab5f06e5788e"}, + "observer_cli": {:hex, :observer_cli, "1.5.3", "d42e20054116c49d5242d3ff9e1913acccebe6015f449d6e312a5bc160e79a62", [:mix, :rebar3], [{:recon, "~>2.5.0", [hex: :recon, repo: "hexpm", optional: false]}], "hexpm", "3d2de7a710b9bed4cfbdae0419d98b1985634bd8cc1f26ef9576c2eb9aa6b35e"}, + "open_graph": {:hex, :open_graph, "0.0.4", "0790882d5735286abc8391b37d2707613ecd74ebdc5340be664d3df345cd8cae", [:mix], [{:httpoison, "~> 1.5", [hex: :httpoison, repo: "hexpm", optional: false]}], "hexpm", "a22a8ddaf9f881af38d519ced463627c37a8dea49a35cc27efdb9f2b839b9049"}, + "parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"}, + "peerage": {:hex, :peerage, "1.0.3", "945c3dfc407215b89682c65198d004028df0fa772bfea4d2cc9bb4e39e8be9a0", [:mix], [{:deferred_config, "~> 0.1.1", [hex: :deferred_config, repo: "hexpm", optional: false]}], "hexpm", "c9a3316be955f65da1ec39ef891b4c15f2f13bec7bd8d84ef3cdc9fd633d889b"}, +- "phoenix": {:hex, :phoenix, "1.4.16", "2cbbe0c81e6601567c44cc380c33aa42a1372ac1426e3de3d93ac448a7ec4308", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.8.1 or ~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "856cc1a032fa53822737413cf51aa60e750525d7ece7d1c0576d90d7c0f05c24"}, ++ "phoenix": {:hex, :phoenix, "1.5.4", "0fca9ce7e960f9498d6315e41fcd0c80bfa6fbeb5fa3255b830c67fdfb7e703f", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4e516d131fde87b568abd62e1b14aa07ba7d5edfd230bab4e25cc9dedbb39135"}, + "phoenix_ecto": {:hex, :phoenix_ecto, "4.1.0", "a044d0756d0464c5a541b4a0bf4bcaf89bffcaf92468862408290682c73ae50d", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.9", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "c5e666a341ff104d0399d8f0e4ff094559b2fde13a5985d4cb5023b2c2ac558b"}, +- "phoenix_html": {:hex, :phoenix_html, "2.14.1", "7dabafadedb552db142aacbd1f11de1c0bbaa247f90c449ca549d5e30bbc66b4", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "536d5200ad37fecfe55b3241d90b7a8c3a2ca60cd012fc065f776324fa9ab0a9"}, ++ "phoenix_html": {:hex, :phoenix_html, "2.14.2", "b8a3899a72050f3f48a36430da507dd99caf0ac2d06c77529b1646964f3d563e", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "58061c8dfd25da5df1ea0ca47c972f161beb6c875cd293917045b92ffe1bf617"}, + "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.2.4", "3080e8a89bab3ec08d4dd9a6858dfa24af9334464aae78c83e58a2db37c6f983", [:mix], [{:phoenix_html, "~> 2.14.1 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.12.0 or ~> 0.13.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.4.0 or ~> 0.5.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "1c89595ef60f1b76ac07705e73f001823af451491792a4b0d5b2b2a3789b0a00"}, + "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.2.1", "274a4b07c4adbdd7785d45a8b0bb57634d0b4f45b18d2c508b26c0344bd59b8f", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "41b4103a2fa282cfd747d377233baf213c648fdcc7928f432937676532490eee"}, + "phoenix_live_view": {:hex, :phoenix_live_view, "0.12.1", "42f591c781edbf9fab921319076b7ac635d43aa23e6748d2644563326236d7e4", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.4.16 or ~> 1.5.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14", [hex: :phoenix_html, repo: "hexpm", optional: false]}], "hexpm", "585321e98df1cd5943e370b9784e950a37ca073744eb534660c9048967c52ab6"}, +- "phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm", "1f13f9f0f3e769a667a6b6828d29dec37497a082d195cc52dbef401a9b69bf38"}, +- "plug": {:hex, :plug, "1.10.0", "6508295cbeb4c654860845fb95260737e4a8838d34d115ad76cd487584e2fc4d", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "422a9727e667be1bf5ab1de03be6fa0ad67b775b2d84ed908f3264415ef29d4a"}, ++ "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, ++ "plug": {:hex, :plug, "1.10.3", "c9cebe917637d8db0e759039cc106adca069874e1a9034fd6e3fdd427fd3c283", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "01f9037a2a1de1d633b5a881101e6a444bcabb1d386ca1e00bb273a1f1d9d939"}, + "plug_attack": {:hex, :plug_attack, "0.4.2", "0413707429210b890e21758902ac720a4e06c0350453df9954da3d4ca4bac5d8", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e9a2b1786e1d180d295b5974d337f0952de007eaf081f11d075aa1be65347288"}, +- "plug_cowboy": {:hex, :plug_cowboy, "2.1.2", "8b0addb5908c5238fac38e442e81b6fcd32788eaa03246b4d55d147c47c5805e", [:mix], [{:cowboy, "~> 2.5", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "7d722581ce865a237e14da6d946f92704101740a256bd13ec91e63c0b122fc70"}, ++ "plug_cowboy": {:hex, :plug_cowboy, "2.3.0", "149a50e05cb73c12aad6506a371cd75750c0b19a32f81866e1a323dda9e0e99d", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "bc595a1870cef13f9c1e03df56d96804db7f702175e4ccacdb8fc75c02a7b97e"}, + "plug_crypto": {:hex, :plug_crypto, "1.1.2", "bdd187572cc26dbd95b87136290425f2b580a116d3fb1f564216918c9730d227", [:mix], [], "hexpm", "6b8b608f895b6ffcfad49c37c7883e8df98ae19c6a28113b02aa1e9c5b22d6b5"}, + "poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"}, + "postgrex": {:hex, :postgrex, "0.15.3", "5806baa8a19a68c4d07c7a624ccdb9b57e89cbc573f1b98099e3741214746ae4", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "4737ce62a31747b4c63c12b20c62307e51bb4fcd730ca0c32c280991e0606c90"}, +@@ -80,7 +81,7 @@ + "slugger": {:hex, :slugger, "0.3.0", "efc667ab99eee19a48913ccf3d038b1fb9f165fa4fbf093be898b8099e61b6ed", [:mix], [], "hexpm", "20d0ded0e712605d1eae6c5b4889581c3460d92623a930ddda91e0e609b5afba"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, + "statix": {:hex, :statix, "1.4.0", "c822abd1e60e62828e8460e932515d0717aa3c089b44cc3f795d43b94570b3a8", [:mix], [], "hexpm", "507373cc80925a9b6856cb14ba17f6125552434314f6613c907d295a09d1a375"}, +- "telemetry": {:hex, :telemetry, "0.4.1", "ae2718484892448a24470e6aa341bc847c3277bfb8d4e9289f7474d752c09c7f", [:rebar3], [], "hexpm", "4738382e36a0a9a2b6e25d67c960e40e1a2c95560b9f936d8e29de8cd858480f"}, ++ "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, + "telemetry_metrics": {:hex, :telemetry_metrics, "0.5.0", "1b796e74add83abf844e808564275dfb342bcc930b04c7577ab780e262b0d998", [:mix], [{:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "31225e6ce7a37a421a0a96ec55244386aec1c190b22578bd245188a4a33298fd"}, + "telemetry_poller": {:hex, :telemetry_poller, "0.5.1", "21071cc2e536810bac5628b935521ff3e28f0303e770951158c73eaaa01e962a", [:rebar3], [{:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4cab72069210bc6e7a080cec9afffad1b33370149ed5d379b81c7c5f0c663fd4"}, + "temp": {:hex, :temp, "0.4.7", "2c78482cc2294020a4bc0c95950b907ff386523367d4e63308a252feffbea9f2", [:mix], [], "hexpm", "6af19e7d6a85a427478be1021574d1ae2a1e1b90882586f06bde76c63cd03e0d"}, + +#+END_EXAMPLE + +*** When trying to run the app I got a warning: +[warn] The :pubsub key in your RetWeb.Endpoint is deprecated. + +You must now start the pubsub in your application supervision tree. +Go to lib/my_app/application.ex and add the following: + + {Phoenix.PubSub, [name: Ret.PubSub, adapter: Phoenix.PubSub.PG2]} + +Now, back in your config files in config/*, you can remove the :pubsub +key and add the :pubsub_server key, with the PubSub name: + + pubsub_server: Ret.PubSub + +*** The full output from the run command was: +**** [jomb@jlomb2 reticulum]$ scripts/run.sh + Erlang/OTP 22 [erts-10.7.2] [source] [64-bit] [smp:12:12] [ds:12:12:10] [async-threads:1] [hipe] + + ==> nimble_parsec + Compiling 4 files (.ex) + Generated nimble_parsec app + ===> Compiling telemetry + ==> telemetry_metrics + Compiling 7 files (.ex) + Generated telemetry_metrics app + ===> Compiling telemetry_poller + ==> absinthe + Compiling 1 file (.yrl) + Compiling 1 file (.erl) + Compiling 248 files (.ex) + Generated absinthe app + ==> crontab + Compiling 7 files (.ex) + Generated crontab app + ==> quantum + Compiling 20 files (.ex) + warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs) + lib/quantum/date_library/calendar.ex:1 + + warning: Code.ensure_compiled?/1 is deprecated. Use Code.ensure_compiled/1 instead (see the proper disclaimers in its docs) + lib/quantum/date_library/timex.ex:1 + + Generated quantum app + ==> credo + Compiling 203 files (.ex) + Compiling lib/credo/code/heredocs.ex (it's taking more than 15s) + Generated credo app + ==> ex_json_schema + Compiling 12 files (.ex) + Generated ex_json_schema app + ==> phoenix_pubsub + Compiling 11 files (.ex) + Generated phoenix_pubsub app + ==> ua_parser + Compiling 13 files (.ex) + Generated ua_parser app + ==> oauther + Compiling 1 file (.ex) + Generated oauther app + ==> slugger + Compiling 2 files (.ex) + Generated slugger app + ===> Compiling cowlib + ===> Compiling cowboy + ==> the_end + Compiling 11 files (.ex) + warning: Map.size/1 is deprecated. Use Kernel.map_size/1 instead + lib/the_end/request_drainer.ex:88: TheEnd.RequestDrainer.handle_pending_requests/4 + + Generated the_end app + ==> ecto_autoslug_field + Compiling 4 files (.ex) + Generated ecto_autoslug_field app + ==> ex_rated + Compiling 3 files (.ex) + Generated ex_rated app + ==> mime + Compiling 2 files (.ex) + warning: this clause cannot match because a previous clause at line 2 always matches + lib/mime.ex:2 + + warning: this clause cannot match because a previous clause at line 2 always matches + lib/mime.ex:2 + + warning: this clause cannot match because a previous clause at line 2 always matches + lib/mime.ex:2 + + warning: this clause cannot match because a previous clause at line 2 always matches + lib/mime.ex:2 + + warning: this clause cannot match because a previous clause at line 2 always matches + lib/mime.ex:2 + + Generated mime app + ==> mix_test_watch + Compiling 8 files (.ex) + Generated mix_test_watch app + ==> postgrex + Compiling 61 files (.ex) + Generated postgrex app + ==> ecto_sql + Compiling 23 files (.ex) + warning: Code.load_file/1 is deprecated. Use Code.require_file/2 or Code.compile_file/2 instead + lib/ecto/migrator.ex:592: Ecto.Migrator.load_migration!/1 + + Generated ecto_sql app + ==> ecto_boot_migration + Compiling 1 file (.ex) + Generated ecto_boot_migration app + ==> ecto_enum + Compiling 5 files (.ex) + Generated ecto_enum app + ==> artificery + Compiling 10 files (.ex) + Generated artificery app + ==> distillery + Compiling 33 files (.ex) + Generated distillery app + ==> observer_cli + Compiling 13 files (.erl) + Generated observer_cli app + ==> toml + Compiling 10 files (.ex) + Generated toml app + ==> secure_random + Compiling 1 file (.ex) + Generated secure_random app + ==> scrivener_ecto + Compiling 2 files (.ex) + Generated scrivener_ecto app + ==> plug_crypto + Compiling 5 files (.ex) + Generated plug_crypto app + ==> plug + Compiling 1 file (.erl) + Compiling 40 files (.ex) + warning: System.stacktrace/0 outside of rescue/catch clauses is deprecated. If you want to support only Elixir v1.7+, you must access __STACKTRACE__ inside a rescue/catch. If you want to support earlier Elixir versions, move System.stacktrace/0 inside a rescue/catch + lib/plug/conn/wrapper_error.ex:23 + + Generated plug app + ==> absinthe_plug + Compiling 18 files (.ex) + Generated absinthe_plug app + ==> phoenix_html + Compiling 8 files (.ex) + Generated phoenix_html app + ==> plug_cowboy + Compiling 6 files (.ex) + Generated plug_cowboy app + ==> phoenix + Compiling 66 files (.ex) + Generated phoenix app + ==> absinthe_phoenix + Compiling 9 files (.ex) + Generated absinthe_phoenix app + ==> phoenix_live_view + Compiling 18 files (.ex) + Generated phoenix_live_view app + ==> phoenix_live_dashboard + Compiling 32 files (.ex) + Generated phoenix_live_dashboard app + ==> phoenix_live_reload + Compiling 4 files (.ex) + Generated phoenix_live_reload app + ==> cors_plug + Compiling 1 file (.ex) + Generated cors_plug app + ==> plug_attack + Compiling 4 files (.ex) + Generated plug_attack app + ==> bamboo + Compiling 26 files (.ex) + Generated bamboo app + ==> bamboo_smtp + Compiling 1 file (.ex) + Generated bamboo_smtp app + ==> guardian + Compiling 20 files (.ex) + Generated guardian app + ==> canary + Compiling 2 files (.ex) + warning: "not expr1 in expr2" is deprecated. Instead use "expr1 not in expr2" if you require Elixir v1.5+, or "not(expr1 in expr2)" if you have to support earlier Elixir versions + lib/canary/plugs.ex:437 + + Generated canary app + ==> sentry + Compiling 13 files (.ex) + Generated sentry app + ==> reverse_proxy_plug + Compiling 2 files (.ex) + Generated reverse_proxy_plug app + ==> phoenix_ecto + Compiling 7 files (.ex) + Generated phoenix_ecto app + ==> ret + Compiling 138 files (.ex) + Generated ret app + [debug] QUERY OK db=0.1ms decode=3.8ms queue=1.1ms idle=0.0ms + CREATE SCHEMA IF NOT EXISTS ret0 [] + [debug] QUERY OK db=0.1ms queue=0.3ms idle=7.2ms + CREATE SCHEMA IF NOT EXISTS coturn [] + [debug] QUERY OK db=5.0ms queue=0.1ms idle=7.4ms + ALTER DATABASE ret_dev SET search_path TO ret0 [] + [info] Already up + [debug] QUERY OK db=2.1ms queue=0.9ms idle=15.5ms + INSERT INTO coturn.turn_secret (realm, value, inserted_at, updated_at) values ($1, $2, now(), now()) ["ret", "a326b0125f18fe78da0ba69a924d373c"] + [debug] QUERY OK db=2.0ms queue=0.7ms idle=4.9ms + DELETE FROM coturn.turn_secret WHERE inserted_at < now() - interval '15 minutes' [] + [warn] The :pubsub key in your RetWeb.Endpoint is deprecated. + + You must now start the pubsub in your application supervision tree. + Go to lib/my_app/application.ex and add the following: + + {Phoenix.PubSub, [name: Ret.PubSub, adapter: Phoenix.PubSub.PG2]} + + Now, back in your config files in config/*, you can remove the :pubsub + key and add the :pubsub_server key, with the PubSub name: + + pubsub_server: Ret.PubSub + + [info] Running RetWeb.Endpoint with cowboy 2.8.0 at 0.0.0.0:4000 (https) + [info] Access RetWeb.Endpoint at https://hubs.local:4000 + Interactive Elixir (1.10.3) - press Ctrl+C to exit (type h() ENTER for help) + iex(1)> 18:09:29 - info: compiled 6 files into 2 files, copied stream-offline.png in 624 ms + [debug] Tzdata polling for update. + [info] tzdata release in place is from a file last modified Wed, 11 Sep 2019 19:35:17 GMT. Release file on server was last modified Fri, 24 Apr 2020 04:15:20 GMT. + [debug] Tzdata downloading new data from https://data.iana.org/time-zones/tzdata-latest.tar.gz + [debug] Tzdata data downloaded. Release version 2020a. + [info] Tzdata has updated the release from 2019c to 2020a + [debug] Tzdata deleting ETS table for version 2019c + [debug] Tzdata deleting ETS table file for version 2019c + +*** I ignored that warning and continued along. +**** I got this feedback: +info] GET /dashboard/nonode%40nohost +[debug] Processing with Phoenix.LiveView.Plug.home/2 + Parameters: [UNFETCHED] + Pipelines: [:browser] +[info] Sent 200 in 1ms +[info] CONNECTED TO Phoenix.LiveView.Socket in 118µs + Transport: :websocket + Serializer: Phoenix.Socket.V2.JSONSerializer + Parameters: %{"_csrf_token" => "MTtZFQJEXRtMKRM0VBwnDBADZiY1QRMTzmmzu32D-HRUgEHEHq6hylQR", "_mounts" => "0", "vsn" => "2.0.0"} +[error] an exception was raised: + ** (FunctionClauseError) no function clause matching in Phoenix.LiveView.Channel.start_link/1 + (phoenix_live_view 0.12.1) lib/phoenix_live_view/channel.ex:12: Phoenix.LiveView.Channel.start_link({RetWeb.Endpoint, {#PID<0.12536.0>, #Reference<0.1111297895.2478833665.188584>}}) + (elixir 1.10.3) lib/dynamic_supervisor.ex:692: DynamicSupervisor.start_child/3 + (elixir 1.10.3) lib/dynamic_supervisor.ex:678: DynamicSupervisor.handle_start_child/2 + (stdlib 3.12.1) gen_server.erl:661: :gen_server.try_handle_call/4 + (stdlib 3.12.1) gen_server.erl:690: :gen_server.handle_msg/6 + (stdlib 3.12.1) proc_lib.erl:249: :proc_lib.init_p_do_apply/3 + +**** The dashboard still wasn't working, so I figured I'd update it: +#+BEGIN_EXAMPLE diff +modified mix.exs +@@ -47,11 +47,11 @@ defmodule Ret.Mixfile do + {:absinthe_phoenix, "~> 2.0"}, + {:postgrex, ">= 0.0.0"}, + {:phoenix_html, "~> 2.13"}, +- {:phoenix_live_view, "~> 0.12"}, ++ {:phoenix_live_view, "~> 0.14.4"}, + {:phoenix_live_reload, "~> 1.2", only: :dev}, + {:telemetry_metrics, "~> 0.4"}, + {:telemetry_poller, "~> 0.4"}, +- {:phoenix_live_dashboard, "~> 0.1"}, ++ {:phoenix_live_dashboard, "~> 0.2.7"}, + {:gettext, "~> 0.17"}, + {:cowboy, "~> 2.8"}, + {:plug_cowboy, "~> 2.1"}, +modified mix.lock +@@ -58,9 +58,9 @@ + "phoenix": {:hex, :phoenix, "1.5.4", "0fca9ce7e960f9498d6315e41fcd0c80bfa6fbeb5fa3255b830c67fdfb7e703f", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_html, "~> 2.13", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 1.0 or ~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.1.2 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4e516d131fde87b568abd62e1b14aa07ba7d5edfd230bab4e25cc9dedbb39135"}, + "phoenix_ecto": {:hex, :phoenix_ecto, "4.1.0", "a044d0756d0464c5a541b4a0bf4bcaf89bffcaf92468862408290682c73ae50d", [:mix], [{:ecto, "~> 3.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.9", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "c5e666a341ff104d0399d8f0e4ff094559b2fde13a5985d4cb5023b2c2ac558b"}, + "phoenix_html": {:hex, :phoenix_html, "2.14.2", "b8a3899a72050f3f48a36430da507dd99caf0ac2d06c77529b1646964f3d563e", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "58061c8dfd25da5df1ea0ca47c972f161beb6c875cd293917045b92ffe1bf617"}, +- "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.2.4", "3080e8a89bab3ec08d4dd9a6858dfa24af9334464aae78c83e58a2db37c6f983", [:mix], [{:phoenix_html, "~> 2.14.1 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.12.0 or ~> 0.13.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.4.0 or ~> 0.5.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "1c89595ef60f1b76ac07705e73f001823af451491792a4b0d5b2b2a3789b0a00"}, ++ "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.2.7", "21564144897109ac486518651fecd09403a4d9df4d8432e7dcdf156df6a6a31a", [:mix], [{:phoenix_html, "~> 2.14.1 or ~> 2.15", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.14.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.4.0 or ~> 0.5.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "2204c2c6755da7b39a21e312253b93d977cc846c85df8a6c0d9f9505cd8bf15b"}, + "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.2.1", "274a4b07c4adbdd7785d45a8b0bb57634d0b4f45b18d2c508b26c0344bd59b8f", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "41b4103a2fa282cfd747d377233baf213c648fdcc7928f432937676532490eee"}, +- "phoenix_live_view": {:hex, :phoenix_live_view, "0.12.1", "42f591c781edbf9fab921319076b7ac635d43aa23e6748d2644563326236d7e4", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.4.16 or ~> 1.5.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14", [hex: :phoenix_html, repo: "hexpm", optional: false]}], "hexpm", "585321e98df1cd5943e370b9784e950a37ca073744eb534660c9048967c52ab6"}, ++ "phoenix_live_view": {:hex, :phoenix_live_view, "0.14.4", "7286a96287cd29b594ce4a7314249cea7311af04a06c0fa3e50932e188e73996", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.3", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 0.5", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc4f8cf205c784eeccee35de8afbfeb995ce5511ac4839db63d6d67a5ba091d1"}, + "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.0.0", "a1ae76717bb168cdeb10ec9d92d1480fec99e3080f011402c0a2d68d47395ffb", [:mix], [], "hexpm", "c52d948c4f261577b9c6fa804be91884b381a7f8f18450c5045975435350f771"}, + "plug": {:hex, :plug, "1.10.3", "c9cebe917637d8db0e759039cc106adca069874e1a9034fd6e3fdd427fd3c283", [:mix], [{:mime, "~> 1.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "01f9037a2a1de1d633b5a881101e6a444bcabb1d386ca1e00bb273a1f1d9d939"}, + "plug_attack": {:hex, :plug_attack, "0.4.2", "0413707429210b890e21758902ac720a4e06c0350453df9954da3d4ca4bac5d8", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "e9a2b1786e1d180d295b5974d337f0952de007eaf081f11d075aa1be65347288"}, + + #+END_EXAMPLE +*** That change seemed to get the dashboard working