creminology

creminology

Real Time Phoenix Errata P17: Getting first sample working with Phoenix 1.6.x

Skimming ahead, much of the following is explained in Chapter 3, but new readers (like me!) will hit a roadblock in Chapter 2 with their first app not working without making some changes under the latest versions of Phoenix.

mix phx.new hello_sockets --no-ecto --no-live --no-dashboard --no-mailer
cd hello_sockets
mix phx.gen.channel Ping

Permit the generator to create the default socket handler, and follow the instructions to add it to the HelloSocketsWeb.Endpoint module. Also follow the instructions to import user_socket.js by uncommenting the line in assets/js/app.js.

Inside assets/js/user.socket.js, change the name of the channel being joined from “room:42” to “ping”.

Inside HelloSocketsWeb.PingChannel, change the first parameter of join/3 from “ping:lobby” to “ping”.

Inside HelloSocketsWeb.PingChannel, change the channel named “ping:*” to “ping”

In another thread, the author suggests pinning the version of Elixir and Phoenix so as to match the book. But I think it’s important that readers have confidence that they can immediately apply what they learn from this book in their own projects using the latest version of Phoenix.

I took the decision to add the “–no-live” flag when creating the Phoenix app in case having LiveView integrated made things more confusing. In previous versions of Phoenix, one had to explicitly add LiveView; now it comes as a default without the flag.

Most Liked

creminology

creminology

I think it would be great if you could persuade PragProg to let you publish a Github repository of the code; ideally the original code with the commits to make it compatible with Phoenix 1.6.x.

The link to the zipped code repository is on their book page so it’s not as if it’s hidden from non-purchasers. Perhaps they didn’t want to deal with readers posting issues directly to Github.

I do think the book needs some kind of statement or sidebar about why it still has value even in a world where everyone seems to be adopting LiveView. Even if LiveView is introduced later!

One key reason I picked up the book again, which I bought in September 2019, is that I noticed you were still engaging with readers on this forum. So I do appreciate your feedback.

sb8244

sb8244

Author of From Ruby to Elixir and Real-Time Phoenix

I appreciate this report, and it will definitely be addressed in the next update (although I’m not sure when that will be).

Pinning the version is great for people that just want to work through the content, because 99.8% of it hasn’t changed. But I do agree that using the latest version is generally “best” if the user can handle the warnings / upgrade path.

Few thoughts on differences that I know off the top:

  • PubSub 2.0 breaking changes regarding PubSub creation
  • Test warnings due to use ChannelCase instead of import ChannelCase
  • Generators have changed significantly as LiveView has progressed

I’d love to collect additional breaking changes that cause the book to not compile / work as expected.

creminology

creminology

Replying to myself, if there was an update to the book, I think it would be great if you could extend Part IV with guest-written chapters on how to connect it to other frontends such as Flutter, iOS and Javascript frameworks other than React.

For example, perhaps Paul Hollyer who maintains the elm-phoenix-websocket library, would be up for writing an Elm chapter. The fact that he recently released v4 was another reason I picked up your book again.

It’s not that these additional chapters would necessarily add knowledge on using Phoenix for real-time that isn’t already in your book, but they may introduce experiences and strategies more suited to their specific domains.

Anyway. Thanks again for the book.

Popular Pragmatic Bookshelf topics Top

brianokken
Many tasks_proj/tests directories exist in chapters 2, 3, 5 that have tests that use the custom markers smoke and get, which are not decl...
New
edruder
I thought that there might be interest in using the book with Rails 6.1 and Ruby 2.7.2. I’ll note what I needed to do differently here. ...
New
herminiotorres
Hi @Margaret , On page VII the book tells us the example and snippets will be all using Elixir version 1.11 But on page 3 almost the en...
New
HarryDeveloper
Hi @venkats, It has been mentioned in the description of ‘Supervisory Job’ title that 2 things as mentioned below result in the same eff...
New
AleksandrKudashkin
On the page xv there is an instruction to run bin/setup from the main folder. I downloaded the source code today (12/03/21) and can’t see...
New
alanq
This isn’t directly about the book contents so maybe not the right forum…but in some of the code apps (e.g. turbo/06) it sends a TURBO_ST...
New
digitalbias
Title: Build a Weather Station with Elixir and Nerves: Problem connecting to Postgres with Grafana on (page 64) If you follow the defau...
New
adamwoolhether
Is there any place where we can discuss the solutions to some of the exercises? I can figure most of them out, but am having trouble with...
New
AufHe
I’m a newbie to Rails 7 and have hit an issue with the bin/Dev script mentioned on pages 112-113. Iteration A1 - Seeing the list of prod...
New
redconfetti
Docker-Machine became part of the Docker Toolbox, which was deprecated in 2020, long after Docker Desktop supported Docker Engine nativel...
New

Other popular topics Top

DevotionGeo
I know that these benchmarks might not be the exact picture of real-world scenario, but still I expect a Rust web framework performing a ...
New
Rainer
Not sure if following fits exactly this thread, or if we should have a hobby thread… For many years I’m designing and building model air...
New
AstonJ
If you are experiencing Rails console using 100% CPU on your dev machine, then updating your development and test gems might fix the issu...
New
DevotionGeo
The V Programming Language Simple language for building maintainable programs V is already mentioned couple of times in the forum, but I...
New
wmnnd
Here’s the story how one of the world’s first production deployments of LiveView came to be - and how trying to improve it almost caused ...
New
gagan7995
API 4 Path: /user/following/ Method: GET Description: Returns the list of all names of people whom the user follows Response [ { ...
New
AstonJ
Saw this on TikTok of all places! :lol: Anyone heard of them before? Lite:
New
Help
I am trying to crate a game for the Nintendo switch, I wanted to use Java as I am comfortable with that programming language. Can you use...
New
AstonJ
If you want a quick and easy way to block any website on your Mac using Little Snitch simply… File > New Rule: And select Deny, O...
New
New