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:

Where Next?

Popular Frontend topics Top

dyowee
Why or when should one choose Tailwind over Bootstrap? :slight_smile:
New
New
Sally_san
So I’ve got a client that wants to build a site like this: Specifically 3 things from the website: The fullscreen sections that chang...
New
pillaiindu
I mean, when you render all the HTML at the server side and the data is sent through HTTP requests, except only if some tiny things are d...
New
david-j-m
Hi, have a svelte spa gallery site - repl here. Have a couple of category buttons - Oil on Canvas and WaterColor… Sidebar contains all im...
New
sona11
I’m currently working on a JavaScript project that involves converting user-supplied text to numbers. Dealing with different areas and th...
/js
New
Fl4m3Ph03n1x
Background I have a button that may be disabled or not, depending on a set of conditions. I want to disable/enable the button without hav...
New
gameengineer
We are developing on Samsung Tab Active 4 Pro using Android Studio, kotlin and java. We are getting what we think are app deadlocks. The ...
New
avipal
I have an application where it is three layer 1st layer- A legacy core routines 2nd layer- built on top of the Core routine using Dotno...
New
Benjamin-Philip
I’m curious about designing some websites and applications for personal (and potentially public via open sourcing) use. I’m an experience...
New

Other popular topics Top

PragmaticBookshelf
Machine learning can be intimidating, with its reliance on math and algorithms that most programmers don't encounter in their regular wor...
New
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
New
Margaret
Hello everyone! This thread is to tell you about what authors from The Pragmatic Bookshelf are writing on Medium.
1147 29994 760
New
PragmaticBookshelf
Rails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single...
New
PragmaticBookshelf
Programming Ruby is the most complete book on Ruby, covering both the language itself and the standard library as well as commonly used t...
New
PragmaticBookshelf
25 puzzles that will make you a better C programmer by challenging your knowledge of the language, and explaining the technical details o...
New
PragmaticBookshelf
Build modern server-driven web applications using htmx. Whatever programming language you use, you’ll write less (and cleaner) code. ...
New
AstonJ
If you’re getting errors like this: psql: error: connection to server on socket “/tmp/.s.PGSQL.5432” failed: No such file or directory ...
New
RobertRichards
Hair Salon Games for Girls Fun Girls Hair Saloon game is mainly developed for kids. This game allows users to select virtual avatars to ...
New
PragmaticBookshelf
Lint your docs like code: turn any style guide into enforceable rules with Vale and publish clear, consistent content every time. ...
New