Fl4m3Ph03n1x

Fl4m3Ph03n1x

Cannot launch Elixir Desktop app when MIX_ENV=test

Background

I have Phoenix umbrella application. When inside said application, I can run it without issues if MIX_ENV=prod. However, if I do mix test while MIX_ENV=dev, I get an error.

Problem

The error I have is as follows:

18:39:42.101 [error] ** wx object server {:local, WebInterface} terminating
** Last message in was {:"$gen_cast", {:show, &WebInterface.Endpoint.url/0}}
** When Server state == %Desktop.Window{
  module: nil,
  taskbar: nil,
  frame: {:wx_ref, 35, :wxFrame, []},
  notifications: %{},
  webview: {:wx_ref, 49, :wxWebView, []},
  home_url: &WebInterface.Endpoint.url/0,
  last_url: nil,
  title: "Market Manager",
  rebuild: 0,
  rebuild_timer: {:interval, #Reference<0.2679771817.2635857922.255366>}
}
** Reason for termination ==
** {:badarg,
 [
   {:erlang, :binary_to_existing_atom,
    ["Elixir.WebInterface.Endpoint.HTTP", :utf8],
    [error_info: %{module: :erl_erts_errors}]},
   {:elixir_aliases, :safe_concat, 1,
    [file: ~c"src/elixir_aliases.erl", line: 139]},
   {WebInterface.Endpoint, :url, 0,
    [file: ~c"lib/web_interface/endpoint.ex", line: 4]},
   {Desktop.Window, :prepare_url, 1,
    [file: ~c"lib/desktop/window.ex", line: 666]},
   {Desktop.Window, :handle_cast, 2,
    [file: ~c"lib/desktop/window.ex", line: 604]},
   {:wx_object, :handle_msg, 5, [file: ~c"wx_object.erl", line: 493]},
   {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}
 ]}

Reading this, I understand the problem comes from my application.ex, namely:

@impl true
  def start(_type, _args) do
    children = [
      Telemetry,
      {Phoenix.PubSub, name: PubSub},
      Endpoint,
      Manager,
      %{
        id: Desktop.Window,
        start:
          {Desktop.Window, :start_link,
           [
             [
               app: :web_interface,
               id: WebInterface,
               title: "Market Manager",
               size: WindowUtils.calculate_window_size(0.6, 0.8),
               menubar: MenuBar,
               icon: "static/images/resized_logo_5_32x32.png",
               url: &WebInterface.Endpoint.url/0    # This line seems to be a problem
             ]
           ]},
        restart: :transient,
        shutdown: 5_000
      }
    ]

    opts = [strategy: :one_for_one, name: WebInterface.Supervisor]

    Supervisor.start_link(children, opts)
  end

After reading more on the subject I changed my config/test.exs to this:

import Config

config :web_interface, WebInterface.Endpoint,
  http: [ip: {127, 0, 0, 1}, port: 4002],
  secret_key_base: "some_key",
  server: true,
  check_origin: false

But this still does not fix the issue.

In contrast, this is my config/prod.exs:

config :web_interface, WebInterface.Endpoint,
  http: [ip: {127, 0, 0, 1}, port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json",
  secret_key_base: "some_key",
  check_origin: false,
  server: true

But the issue still occurs.

Questions

  • Why am I having this issue?
  • How can I fix it?

Marked As Solved

Fl4m3Ph03n1x

Fl4m3Ph03n1x

Answer

Turns out that in a previous launch of the application, wxWidgets (the process) had exited in a bad state. Perhaps it crashed or something else happened, but what matters here is that trying to restart it was impossible.

I had to restart my machine to start everything in a new clean state.
I also deleted the _build folder to be sure.

This solved the issue.

Where Next?

Popular Frontend topics Top

The_Exile
I am new to programming. I started reading Eloquent Javascript 3rd Edition, as the book comes highly recommended as a good place for beg...
/js
New
Fl4m3Ph03n1x
Background I have a fresh umbrella app and I am trying to create a Phoenix app inside it. However, even though I can create the Phoenix a...
New
Fl4m3Ph03n1x
Background I have created a fresh Phoenix app using mix phx.new.web web_interface --no-dashboard --no-ecto --no-gettext --no-mailer insid...
New
Fl4m3Ph03n1x
Background I have a Phoenix application, where all pages (expect the login page) have a menu at the top. This menu will therefore only a...
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
PickyBiker
I have done small amounts of programming for IOS and for Android, but now I need to create something that works with both. What are the ...
New
ramiro-marinio
Hello. So unexperienced frontend dev here. Basically, 3 or 4 months ago I started working on a project and I committed the capital sin of...
New
Julien0577
Hi all, Anybody knows how to do this menu animation? (from BBVA APP, they have the same for both android and iOS app). Is it custom?...
New
Clintonsuck
Hello, I am new and trying to build my first app. So far, everything was going okay, but now I’m stuck and don’t know how to proceed. May...
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
Stop developing web apps with yesterday’s tools. Today, developers are increasingly adopting Clojure as a web-development platform. See f...
New
PragmaticBookshelf
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you’ll go beyond the syntax—and...
New
Exadra37
Please tell us what is your preferred monitor setup for programming(not gaming) and why you have chosen it. Does your monitor have eye p...
New
dasdom
No chair. I have a standing desk. This post was split into a dedicated thread from our thread about chairs :slight_smile:
New
DevotionGeo
I know that -t flag is used along with -i flag for getting an interactive shell. But I cannot digest what the man page for docker run com...
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
We’ve talked about his book briefly here but it is quickly becoming obsolete - so he’s decided to create a series of 7 podcasts, the firs...
New
AstonJ
If you get Can't find emacs in your PATH when trying to install Doom Emacs on your Mac you… just… need to install Emacs first! :lol: bre...
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
First poster: bot
zig/http.zig at 7cf2cbb33ef34c1d211135f56d30fe23b6cacd42 · ziglang/zig. General-purpose programming language and toolchain for maintaini...
New