Phoenix 1.5 requires Elixir >= 1.7. Be sure your existing version is up to date by running elixir -v
on the command line.
$ mix archive.uninstall phx_new
$ mix archive.install hex phx_new 1.5.0
Update your Phoenix and Phoenix PubSub deps to their latest versions.
Note: The outdated Phoenix.Endpoint.CowboyAdapter for Cowboy 1 is deprecated. Please make sure {:plug_cowboy, "~> 2.1"}
is specified in your deps.
defp deps do
[
{:phoenix, "~> 1.5.0"},
{:phoenix_pubsub, "~> 2.0"},
{:plug_cowboy, "~> 2.1"},
...
]
end
Phoenix.PubSub 2.0 provides a simpler, more extensible, and more performant Phoenix.PubSub API. For users of Phoenix.PubSub, the API is the same, but the pubsub server being started by the endpoint has been deprecated in favor of starting the PubSub server yourself. This prevents race conditions on startup and decouples the PubSub system from the endpoint.
First, replace your endpoint's :pubsub
config with a new :pubsub_server
key in config/config.exs
:
config :my_app, MyApp.Endpoint,
url: [host: "localhost"],
...,
- pubsub: [name: MyApp.PubSub, adapter: Phoenix.PubSub.PG2],
+ pubsub_server: MyApp.PubSub,
Next, update your lib/my_app/application.ex
supervision tree to start its own PubSub:
children = [
+ # Start the PubSub system
+ {Phoenix.PubSub, name: MyApp.PubSub},
# Start the Endpoint (http/https)
MyApp.Endpoint,
]
Rendering the child template from layouts is deprecated. Replace:
<%= render(@view_module, @view_template, assigns) %>
With the new @inner_content
assign:
<%= @inner_content %>
Using Phoenix.ConnTest
is deprecated, replace usage:
use Phoenix.ConnTest
with:
import Plug.Conn
import Phoenix.ConnTest
Note: for most applications, this will be located in a single place in test/support/conn_case.ex
The new LiveDashboard project provides real-time performance monitoring and debugging tools for Phoenix developers. Follow the steps in the project readme to include it in your existing applications https://github.com/phoenixframework/phoenix_live_dashboard
I was stuck running the new
mix setup
task from the templates with the error:ERR! Could not install from "" as it does not contain a package.json file.
. I discovered there's a problem withnpm install --prefix assets
on Windows and it's not working as expected. Instead, you'll have to manually cd into the asset directory and install the dependencies.This seems to be documented here: phoenixframework/phoenix_live_view#449.