Fl4m3Ph03n1x

Fl4m3Ph03n1x

Changing endpoint.ex to “use Desktop.Endpoint” breaks Desktop app

Background

I have created a fresh Phoenix app using mix phx.new.web web_interface --no-dashboard --no-ecto --no-gettext --no-mailer inside an Umbrella app.

After following the basic installation instructions for the dependencies and changing my application.ex to:

defmodule WebInterface.Application do
  use Application

  alias Desktop
  alias WebInterface.{Endpoint, Telemetry, PubSub}
  alias WebInterface.Live.MenuBar

  @impl true
  def start(_type, _args) do
    children = [
      Telemetry,
      {Phoenix.PubSub, name: PubSub},
      Endpoint,
      {Desktop.Window,
       [
         app: :web_interface,
         id: WebInterface,
         title: "Market Manager",
         size: {940, 980},
         menubar: MenuBar,
         icon: "static/images/resized_logo_5_32x32.png",
         url: &WebInterface.Endpoint.url/0
       ]}
    ]

    opts = [strategy: :one_for_one, name: WebInterface.Supervisor]
    Supervisor.start_link(children, opts)
  end

  # boilerplate code bellow
end

I was able to launch my Desktop application and have it working.

Problem

However, after changing endpoint.ex following the instruction #3 here:

I was no longer able to launch the application due to an error:

08:30:14.411 [notice] Application runtime_tools exited: :stopped
** (Mix) Could not start application web_interface: WebInterface.Application.start(:normal, []) returned an error: shutdown: failed to start child: WebInterface.Endpoint
    ** (EXIT) an exception was raised:
        ** (UndefinedFunctionError) function Phoenix.Endpoint.Supervisor.url/1 is undefined or private
            (phoenix 1.7.2) Phoenix.Endpoint.Supervisor.url(WebInterface.Endpoint)
            (phoenix 1.7.2) lib/phoenix/config.ex:65: Phoenix.Config.cache/3
            (web_interface 2.2.0) lib/web_interface/endpoint.ex:2: WebInterface.Endpoint.url/0
            (phoenix 1.7.2) lib/phoenix/endpoint/supervisor.ex:425: Phoenix.Endpoint.Supervisor.log_access_url/2
            (phoenix 1.7.2) lib/phoenix/endpoint/supervisor.ex:17: Phoenix.Endpoint.Supervisor.start_link/3
            (stdlib 4.1.1) supervisor.erl:414: :supervisor.do_start_child_i/3
            (stdlib 4.1.1) supervisor.erl:400: :supervisor.do_start_child/2
            (stdlib 4.1.1) supervisor.erl:384: anonymous fn/3 in :supervisor.start_children/2

To me, this indicates that changing Phoenix.Endpoint to Desktop.Endpoint is no longer necessary.

Question

  1. Is the documentation outdated?
  2. If not, am I missing something? Given that before the change the application worked, what could be causing the issue (assuming the change is indeed necessary)?

It is worth noting however, that the creation of Phoenix projects inside Umbrella applications is currently bugged (see: Phoenix 1.7 welcome page assets not showing properly - Questions / Help - Elixir Programming Language Forum) but I don’t think this is related.

Marked As Solved

Fl4m3Ph03n1x

Fl4m3Ph03n1x

So, after delving into the source code, I am of the opinion the documentation (desktop/guides/your_first_app.md at main · elixir-desktop/desktop · GitHub) needs to be updated, specifically:

def deps do
[
    {:desktop, "~> 1.4"}
]
end

Needs to be:

def deps do
[
    {:desktop, "~> 1.5"}
]
end

As v1.4 breaks with Phoenix LiveView 1.18. More info:

Popular Frontend topics Top

PragmaticBookshelf
Upgrade your skill set, succeed at work, and avoid the many headaches that come with modern front-end development. Simplify your codebase...
New
First poster: bot
Microsoft’s Introduction to JavaScript video series will equip users with the basic skills to start building apps with the popular progra...
New
AstonJ
Just discovered AssemblyScript (our portal is here). It…“aims to make it easy to compile to WebAssembly using TypeScript, no strings att...
New
First poster: bot
Fable 3.0.2 has been released. Link: Release 3.0.2 · fable-compiler/Fable · GitHub
New
First poster: bot
Tailwind CSS Tools For Developers. A collection of tools designed for developers, to save you and your team time when building websites w...
New
mafinar
I (re-)realized I had the book “Modern CSS with Tailwind” bought, never read a page of it until today. With me being a fast reader and th...
New
New
JesseSkinner
I’ve developed a video course called The Joy of Svelte, where I go in depth on Svelte features, especially different ways to manage state...
New
First poster: bot
Announcing Parcel CSS: A new CSS parser, compiler, and minifier written in Rust!. I’m very excited to announce @parcel/css, a new CSS pa...
New
KnowledgeIsPower
These projects are new (not as maturing as Next/other SSG) but they look cool. Anyone using it and share their experience?
New

Other popular topics Top

AstonJ
SpaceVim seems to be gaining in features and popularity and I just wondered how it compares with SpaceMacs in 2020 - anyone have any thou...
New
AstonJ
You might be thinking we should just ask who’s not using VSCode :joy: however there are some new additions in the space that might give V...
New
AstonJ
We have a thread about the keyboards we have, but what about nice keyboards we come across that we want? If you have seen any that look n...
New
AstonJ
I’ve been hearing quite a lot of comments relating to the sound of a keyboard, with one of the most desirable of these called ‘thock’, he...
New
New
AstonJ
In case anyone else is wondering why Ruby 3 doesn’t show when you do asdf list-all ruby :man_facepalming: do this first: asdf plugin-upd...
New
Exadra37
Oh just spent so much time on this to discover now that RancherOS is in end of life but Rancher is refusing to mark the Github repo as su...
New
AstonJ
Saw this on TikTok of all places! :lol: Anyone heard of them before? Lite:
New
mafinar
This is going to be a long an frequently posted thread. While talking to a friend of mine who has taken data structure and algorithm cou...
New
PragmaticBookshelf
Author Spotlight: VM Brasseur @vmbrasseur We have a treat for you today! We turn the spotlight onto Open Source as we sit down with V...
New