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.

Where Next?

Popular Pragmatic Bookshelf topics Top

johnp
Hi Brian, Looks like the api for tinydb has changed a little. Noticed while working on chapter 7 that the .purge() call to the db throws...
New
JohnS
I can’t setup the Rails source code. This happens in a working directory containing multiple (postgres) Rails apps. With: ruby-3.0.0 s...
New
raul
Page 28: It implements io.ReaderAt on the store type. Sorry if it’s a dumb question but was the io.ReaderAt supposed to be io.ReadAt? ...
New
joepstender
The generated iex result below should list products instead of product for the metadata. (page 67) iex> product = %Product{} %Pento....
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
jskubick
I found an issue in Chapter 7 regarding android:backgroundTint vs app:backgroundTint. How to replicate: load chapter-7 from zipfile i...
New
brunogirin
When installing Cards as an editable package, I get the following error: ERROR: File “setup.py” not found. Directory cannot be installe...
New
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
andreheijstek
After running /bin/setup, the first error was: The foreman' command exists in these Ruby versions: That was easy to fix: gem install fore...
New

Other popular topics Top

Devtalk
Hello Devtalk World! Please let us know a little about who you are and where you’re from :nerd_face:
New
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
Inspired by this post from @Carter, which languages, frameworks or other tech or tools do you think is killing it right now? :upside_down...
New
foxtrottwist
A few weeks ago I started using Warp a terminal written in rust. Though in it’s current state of development there are a few caveats (tab...
New
First poster: joeb
The File System Access API with Origin Private File System. WebKit supports new API that makes it possible for web apps to create, open,...
New
PragmaticBookshelf
Author Spotlight Rebecca Skinner @RebeccaSkinner Welcome to our latest author spotlight, where we sit down with Rebecca Skinner, auth...
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
PragmaticBookshelf
Author Spotlight: Sophie DeBenedetto @SophieDeBenedetto The days of the traditional request-response web application are long gone, b...
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
AstonJ
This is cool! DEEPSEEK-V3 ON M4 MAC: BLAZING FAST INFERENCE ON APPLE SILICON We just witnessed something incredible: the largest open-s...
New

Sub Categories: