Josh

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?

Where Next?

Popular Pragmatic Bookshelf topics Top

jimschubert
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
telemachus
Python Testing With Pytest - Chapter 2, warnings for “unregistered custom marks” While running the smoke tests in Chapter 2, I get these...
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
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
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
brunogirin
When running tox for the first time, I got the following error: ERROR: InterpreterNotFound: python3.10 I realised that I was running ...
New
taguniversalmachine
Hi, I am getting an error I cannot figure out on my test. I have what I think is the exact code from the book, other than I changed “us...
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

dasdom
No chair. I have a standing desk. This post was split into a dedicated thread from our thread about chairs :slight_smile:
New
AstonJ
There’s a whole world of custom keycaps out there that I didn’t know existed! Check out all of our Keycaps threads here: https://forum....
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
AstonJ
Do the test and post your score :nerd_face: :keyboard: If possible, please add info such as the keyboard you’re using, the layout (Qw...
New
PragmaticBookshelf
Tailwind CSS is an exciting new CSS framework that allows you to design your site by composing simple utility classes to create complex e...
New
PragmaticBookshelf
Learn different ways of writing concurrent code in Elixir and increase your application's performance, without sacrificing scalability or...
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
First poster: AstonJ
Jan | Rethink the Computer. Jan turns your computer into an AI machine by running LLMs locally on your computer. It’s a privacy-focus, l...
New
PragmaticBookshelf
A masterclass in the fundamentals and principles of functional programming. Minh Quang Tran The Art of Functional Programming is a ma...
New

Sub Categories: