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

abtin
page 20: … protoc command… I had to additionally run the following go get commands in order to be able to compile protobuf code using go...
New
jimmykiang
This test is broken right out of the box… — FAIL: TestAgent (7.82s) agent_test.go:77: Error Trace: agent_test.go:77 agent_test.go:...
New
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
Alexandr
Hi everyone! There is an error on the page 71 in the book “Programming machine learning from coding to depp learning” P. Perrotta. You c...
New
jeremyhuiskamp
Title: Web Development with Clojure, Third Edition, vB17.0 (p9) The create table guestbook syntax suggested doesn’t seem to be accepted ...
New
gilesdotcodes
In case this helps anyone, I’ve had issues setting up the rails source code. Here were the solutions: In Gemfile, change gem 'rails' t...
New
adamwoolhether
When trying to generate the protobuf .go file, I receive this error: Unknown flag: --go_opt libprotoc 3.12.3 MacOS 11.3.1 Googling ...
New
AndyDavis3416
@noelrappin Running the webpack dev server, I receive the following warning: ERROR in tsconfig.json TS18003: No inputs were found in c...
New
hgkjshegfskef
The test is as follows: Scenario: Intersecting a scaled sphere with a ray Given r ← ray(point(0, 0, -5), vector(0, 0, 1)) And s ← sphere...
New
akraut
The markup used to display the uploaded image results in a Phoenix.LiveView.HTMLTokenizer.ParseError error. lib/pento_web/live/product_l...
New

Other popular topics Top

PragmaticBookshelf
Free and open source software is the default choice for the technologies that run our world, and it’s built and maintained by people like...
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
Rainer
My first contact with Erlang was about 2 years ago when I used RabbitMQ, which is written in Erlang, for my job. This made me curious and...
New
AstonJ
I ended up cancelling my Moonlander order as I think it’s just going to be a bit too bulky for me. I think the Planck and the Preonic (o...
New
PragmaticBookshelf
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or...
New
AstonJ
Continuing the discussion from Thinking about learning Crystal, let’s discuss - I was wondering which languages don’t GC - maybe we can c...
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
rustkas
Intensively researching Erlang books and additional resources on it, I have found that the topic of using Regular Expressions is either c...
New
Maartz
Hi folks, I don’t know if I saw this here but, here’s a new programming language, called Roc Reminds me a bit of Elm and thus Haskell. ...
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

Sub Categories: