
Josh
Modern Front-End Development for Rails, Second Edition: can't get code to run
I just bought this book today and am having trouble getting the sample code running on an M1 MacBook.
I cd
into chapter_01/02
do git init
to save the initial state. Then I install Ruby 3.1.2 and run bundle install
.
An error occurred while installing html_tokenizer (0.0.7), and Bundler cannot continue.
In Gemfile:
erb_lint was resolved to 0.1.1, which depends on
better_html was resolved to 1.0.16, which depends on
html_tokenizer
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin24]
Here’s the error log:
current directory: /Users/username/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/html_tokenizer-0.0.7/ext/html_tokenizer_ext
/Users/username/.rbenv/versions/3.1.2/bin/ruby -I /Users/username/.rbenv/versions/3.1.2/lib/ruby/3.1.0 -r ./siteconf20250429-32568-hbwjju.rb extconf.rb
creating Makefile
current directory: /Users/username/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/html_tokenizer-0.0.7/ext/html_tokenizer_ext
make DESTDIR\= clean
current directory: /Users/username/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/html_tokenizer-0.0.7/ext/html_tokenizer_ext
make DESTDIR\=
compiling html_tokenizer.c
compiling parser.c
parser.c:459:45: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32]
459 | INT2NUM(ref.line_number), INT2NUM(ref.column_number));
| ~~~~~~~ ~~~~^~~~~~~~~~~~~
parser.c:459:19: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32]
459 | INT2NUM(ref.line_number), INT2NUM(ref.column_number));
| ~~~~~~~ ~~~~^~~~~~~~~~~
parser.c:458:51: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32]
458 | INT2NUM(ref.mb_start), INT2NUM(ref.mb_start + mb_strlen),
| ~~~~~~~ ~~~~~~~~~~~~~^~~~~~~~~~~
parser.c:458:19: warning: implicit conversion loses integer precision: 'unsigned long' to 'int' [-Wshorten-64-to-32]
458 | INT2NUM(ref.mb_start), INT2NUM(ref.mb_start + mb_strlen),
| ~~~~~~~ ~~~~^~~~~~~~
parser.c:498:9: warning: unused variable 'old' [-Wunused-variable]
498 | void *old = parser->doc.data;
| ^~~
parser.c:721:26: warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
721 | return INT2NUM(parser->errors_count);
| ~~~~~~~ ~~~~~~~~^~~~~~~~~~~~
parser.c:792:3: error: incompatible function pointer types passing 'VALUE (VALUE, VALUE)' (aka 'unsigned long (unsigned long, unsigned long)') to parameter of type 'VALUE (*)(VALUE)' (aka 'unsigned long (*)(unsigned long)') [-Wincompatible-function-pointer-types]
792 | rb_define_method(cParser, "errors", parser_errors_method, 0);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/username/.rbenv/versions/3.1.2/include/ruby-3.1.0/ruby/internal/anyargs.h:287:135: note: expanded from macro 'rb_define_method'
287 | #define rb_define_method(klass, mid, func, arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity))
| ^~~~~~
/Users/username/.rbenv/versions/3.1.2/include/ruby-3.1.0/ruby/internal/anyargs.h:276:1: note: passing argument to parameter here
276 | RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
| ^
/Users/username/.rbenv/versions/3.1.2/include/ruby-3.1.0/ruby/internal/anyargs.h:254:72: note: expanded from macro 'RBIMPL_ANYARGS_DECL'
254 | RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); \
| ^
6 warnings and 1 error generated.
make: *** [parser.o] Error 1
make failed, exit code 2
I spent almost an hour with Copilot trying to debug it, but still couldn’t get it to run. I updated some of the dependencies, but that just created other errors where it couldn’t find the Logger.
Has anyone been able to get the sample code working recently?
Popular Pragmatic Bookshelf topics

In Chapter 3, the source for index introduces Config on page 31, followed by more code including tests; Config isn’t introduced until pag...
New

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

Title: Web Development with Clojure, Third Edition, pg 116
Hi - I just started chapter 5 and I am stuck on page 116 while trying to star...
New

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

The book has the same “Problem space/Solution space” diagram on page 18 as is on page 17. The correct Problem/Solution space diagrams ar...
New

I ran this command after installing the sample application:
$ cards add do something --owner Brian
And got a file not found error:
Fil...
New

It seems the second code snippet is missing the code to set the current_user:
current_user: Accounts.get_user_by_session_token(session["...
New

Hi, I’ve got a question about the implementation of PubSub when using a Phoenix.Socket.Transport behaviour rather than channels.
Before ...
New

@parrt
In the context of Chapter 4.3, the grammar Java.g4, meant to parse Java 6 compilation units, no longer passes ANTLR (currently 4....
New

I am using Android Studio Chipmunk | 2021.2.1 Patch 2
Build #AI-212.5712.43.2112.8815526, built on July 10, 2022
Runtime version: 11.0....
New
Other popular topics

I’ve been hearing quite a lot of comments relating to the sound of a keyboard, with one of the most desirable of these called ‘thock’, he...
New
New

Create efficient, elegant software tests in pytest, Python's most powerful testing framework.
Brian Okken @brianokken
Edited by Kat...
New

API 4
Path:
/user/following/
Method:
GET
Description:
Returns the list of all names of people whom the user follows
Response
[
{ ...
New

Use WebRTC to build web applications that stream media and data in real time directly from one user to another, all in the browser.
...
New

Was just curious to see if any were around, found this one:
I got 51/100:
Not sure if it was meant to buy I am sure at times the b...
New
New

Author Spotlight:
Peter Ullrich
@PJUllrich
Data is at the core of every business, but it is useless if nobody can access and analyze ...
New

Hello,
I’m a beginner in Android development and I’m facing an issue with my project setup. In my build.gradle.kts file, I have the foll...
New

Ask Me Anything with
Mark Volkmann
@mvolkmann
On February 24 and 25, we are giving you a chance to ask questions of PragProg author M...
New
Latest in Modern Front-End Development for Rails, Second Edition
Categories:
Sub Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /rails
- /python
- /js
- /security
- /go
- /swift
- /vim
- /clojure
- /emacs
- /haskell
- /java
- /onivim
- /typescript
- /svelte
- /kotlin
- /crystal
- /c-plus-plus
- /tailwind
- /react
- /gleam
- /ocaml
- /flutter
- /elm
- /vscode
- /ash
- /html
- /opensuse
- /centos
- /php
- /deepseek
- /zig
- /scala
- /sublime-text
- /lisp
- /textmate
- /nixos
- /debian
- /react-native
- /agda
- /kubuntu
- /arch-linux
- /django
- /ubuntu
- /revery
- /manjaro
- /spring
- /nodejs
- /diversity
- /deno
- /lua
- /julia
- /slackware
- /c