Skip to content

Commit

Permalink
Ruby 3.4 compatibility (#88)
Browse files Browse the repository at this point in the history
* Update development environment to Ruby 3.4.1
* Add Ruby 3.4 to the test matrix
* Rebuild test fixtures
* Update changelog
* Add gems removed from standard libraries to Rails 7.0 test Gemfile
  • Loading branch information
gael-ian authored Jan 6, 2025
1 parent 722515b commit c82b13a
Show file tree
Hide file tree
Showing 7 changed files with 1,097 additions and 937 deletions.
3 changes: 2 additions & 1 deletion .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3"]
ruby: ["2.7", "3.0", "3.1", "3.2", "3.3", "3.4"]
gemfile: [
dev/gemfiles/rails-7.0.x.gemfile,
dev/gemfiles/rails-7.1.x.gemfile,
dev/gemfiles/rails-7.2.x.gemfile,
Gemfile
]
exclude:
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [Unreleased]

### Changed

* Add Ruby 3.4 to the test matrix (#88)

## Version 2.4.1 (2024-11-25)

### Changed
Expand Down
185 changes: 95 additions & 90 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,65 +7,65 @@ PATH
GEM
remote: https://rubygems.org/
specs:
actioncable (8.0.0)
actionpack (= 8.0.0)
activesupport (= 8.0.0)
actioncable (8.0.1)
actionpack (= 8.0.1)
activesupport (= 8.0.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (8.0.0)
actionpack (= 8.0.0)
activejob (= 8.0.0)
activerecord (= 8.0.0)
activestorage (= 8.0.0)
activesupport (= 8.0.0)
actionmailbox (8.0.1)
actionpack (= 8.0.1)
activejob (= 8.0.1)
activerecord (= 8.0.1)
activestorage (= 8.0.1)
activesupport (= 8.0.1)
mail (>= 2.8.0)
actionmailer (8.0.0)
actionpack (= 8.0.0)
actionview (= 8.0.0)
activejob (= 8.0.0)
activesupport (= 8.0.0)
actionmailer (8.0.1)
actionpack (= 8.0.1)
actionview (= 8.0.1)
activejob (= 8.0.1)
activesupport (= 8.0.1)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (8.0.0)
actionview (= 8.0.0)
activesupport (= 8.0.0)
actionpack (8.0.1)
actionview (= 8.0.1)
activesupport (= 8.0.1)
nokogiri (>= 1.8.5)
rack (>= 2.2.4)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
useragent (~> 0.16)
actiontext (8.0.0)
actionpack (= 8.0.0)
activerecord (= 8.0.0)
activestorage (= 8.0.0)
activesupport (= 8.0.0)
actiontext (8.0.1)
actionpack (= 8.0.1)
activerecord (= 8.0.1)
activestorage (= 8.0.1)
activesupport (= 8.0.1)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (8.0.0)
activesupport (= 8.0.0)
actionview (8.0.1)
activesupport (= 8.0.1)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (8.0.0)
activesupport (= 8.0.0)
activejob (8.0.1)
activesupport (= 8.0.1)
globalid (>= 0.3.6)
activemodel (8.0.0)
activesupport (= 8.0.0)
activerecord (8.0.0)
activemodel (= 8.0.0)
activesupport (= 8.0.0)
activemodel (8.0.1)
activesupport (= 8.0.1)
activerecord (8.0.1)
activemodel (= 8.0.1)
activesupport (= 8.0.1)
timeout (>= 0.4.0)
activestorage (8.0.0)
actionpack (= 8.0.0)
activejob (= 8.0.0)
activerecord (= 8.0.0)
activesupport (= 8.0.0)
activestorage (8.0.1)
actionpack (= 8.0.1)
activejob (= 8.0.1)
activerecord (= 8.0.1)
activesupport (= 8.0.1)
marcel (~> 1.0)
activesupport (8.0.0)
activesupport (8.0.1)
base64
benchmark (>= 0.3)
bigdecimal
Expand All @@ -81,31 +81,31 @@ GEM
ast (2.4.2)
base64 (0.2.0)
benchmark (0.4.0)
bigdecimal (3.1.8)
bigdecimal (3.1.9)
builder (3.3.0)
byebug (11.1.3)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
crass (1.0.6)
date (3.4.0)
date (3.4.1)
diff-lcs (1.5.1)
docile (1.4.1)
drb (2.2.1)
erubi (1.13.0)
erubi (1.13.1)
formtastic (5.0.0)
actionpack (>= 6.0.0)
globalid (1.2.1)
activesupport (>= 6.1)
i18n (1.14.6)
concurrent-ruby (~> 1.0)
io-console (0.7.2)
irb (1.14.1)
io-console (0.8.0)
irb (1.14.3)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
json (2.8.2)
json (2.9.1)
language_server-protocol (3.17.0.3)
logger (1.6.1)
loofah (2.23.1)
logger (1.6.4)
loofah (2.24.0)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
Expand All @@ -116,8 +116,8 @@ GEM
marcel (1.0.4)
mini_mime (1.1.5)
mini_portile2 (2.8.8)
minitest (5.25.2)
net-imap (0.5.1)
minitest (5.25.4)
net-imap (0.5.5)
date
net-protocol
net-pop (0.1.2)
Expand All @@ -127,65 +127,67 @@ GEM
net-smtp (0.5.0)
net-protocol
nio4r (2.7.4)
nokogiri (1.16.7)
nokogiri (1.18.1)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.16.7-x86_64-linux)
nokogiri (1.18.1-x86_64-linux-gnu)
racc (~> 1.4)
package_json (0.1.0)
parallel (1.26.3)
parser (3.3.6.0)
ast (~> 2.4.1)
racc
psych (5.2.0)
psych (5.2.2)
date
stringio
puma (6.5.0)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.1.8)
rack-proxy (0.7.7)
rack
rack-session (2.0.0)
rack-session (2.1.0)
base64 (>= 0.1.0)
rack (>= 3.0.0)
rack-test (2.1.0)
rack-test (2.2.0)
rack (>= 1.3)
rackup (2.2.1)
rack (>= 3)
rails (8.0.0)
actioncable (= 8.0.0)
actionmailbox (= 8.0.0)
actionmailer (= 8.0.0)
actionpack (= 8.0.0)
actiontext (= 8.0.0)
actionview (= 8.0.0)
activejob (= 8.0.0)
activemodel (= 8.0.0)
activerecord (= 8.0.0)
activestorage (= 8.0.0)
activesupport (= 8.0.0)
rails (8.0.1)
actioncable (= 8.0.1)
actionmailbox (= 8.0.1)
actionmailer (= 8.0.1)
actionpack (= 8.0.1)
actiontext (= 8.0.1)
actionview (= 8.0.1)
activejob (= 8.0.1)
activemodel (= 8.0.1)
activerecord (= 8.0.1)
activestorage (= 8.0.1)
activesupport (= 8.0.1)
bundler (>= 1.15.0)
railties (= 8.0.0)
railties (= 8.0.1)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0)
rails-html-sanitizer (1.6.2)
loofah (~> 2.21)
nokogiri (~> 1.14)
railties (8.0.0)
actionpack (= 8.0.0)
activesupport (= 8.0.0)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
railties (8.0.1)
actionpack (= 8.0.1)
activesupport (= 8.0.1)
irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
zeitwerk (~> 2.6)
rainbow (3.1.1)
rake (13.2.1)
rdoc (6.8.1)
rdoc (6.10.0)
psych (>= 4.0.0)
regexp_parser (2.9.2)
reline (0.5.11)
regexp_parser (2.10.0)
reline (0.6.0)
io-console (~> 0.5)
rspec (3.13.0)
rspec-core (~> 3.13.0)
Expand All @@ -207,36 +209,36 @@ GEM
rspec-expectations (~> 3.13)
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-support (3.13.1)
rubocop (1.68.0)
rspec-support (3.13.2)
rubocop (1.69.2)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.4, < 3.0)
rubocop-ast (>= 1.32.2, < 2.0)
regexp_parser (>= 2.9.3, < 3.0)
rubocop-ast (>= 1.36.2, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.36.1)
unicode-display_width (>= 2.4.0, < 4.0)
rubocop-ast (1.37.0)
parser (>= 3.3.1.0)
rubocop-performance (1.23.0)
rubocop-performance (1.23.1)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.27.0)
rubocop-rails (2.28.0)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 1.52.0, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rake (0.6.0)
rubocop (~> 1.0)
rubocop-rspec (3.2.0)
rubocop-rspec (3.3.0)
rubocop (~> 1.61)
rubocop-rspec_rails (2.30.0)
rubocop (~> 1.61)
rubocop-rspec (~> 3, >= 3.0.1)
ruby-progressbar (1.13.0)
securerandom (0.3.2)
securerandom (0.4.1)
semantic_range (3.1.0)
shakapacker (8.0.2)
activesupport (>= 5.2)
Expand All @@ -253,18 +255,21 @@ GEM
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.1)
simplecov_json_formatter (0.1.4)
sqlite3 (2.3.1)
sqlite3 (2.5.0)
mini_portile2 (~> 2.8.0)
sqlite3 (2.3.1-x86_64-linux-gnu)
sqlite3 (2.5.0-x86_64-linux-gnu)
stringio (3.1.2)
thor (1.3.2)
timeout (0.4.2)
timeout (0.4.3)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.6.0)
unicode-display_width (3.1.3)
unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.0.4)
uri (1.0.2)
useragent (0.16.10)
websocket-driver (0.7.6)
useragent (0.16.11)
websocket-driver (0.7.7)
base64
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
zeitwerk (2.7.1)
Expand Down Expand Up @@ -296,4 +301,4 @@ DEPENDENCIES
sqlite3 (~> 2.0)

BUNDLED WITH
2.5.3
2.6.2
4 changes: 4 additions & 0 deletions dev/gemfiles/rails-7.0.x.gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ source 'http://rubygems.org'
gemspec path: '../..'

group :development, :test do
gem 'drb'
gem 'bigdecimal'
gem 'logger'
gem 'mutex_m'
gem 'psych', '< 4.0.0'
gem 'puma'
gem 'rails', '~> 7.0.0'
Expand Down
2 changes: 1 addition & 1 deletion npm/__tests__/fixtures/rails.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"link":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\"> <div class=\"field\"> <label for=\"list_name\">Name</label> <input type=\"text\" name=\"list[name]\" id=\"list_name\"> </div> <h3>Items</h3> <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'> <div> <a partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"4cfcd19c-ed3e-484f-9895-6249f88769d7\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\" href=\"#\">Add item</a><template data-name=\"4cfcd19c-ed3e-484f-9895-6249f88769d7\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\"> <input value=\"false\" autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][_destroy]\" id=\"list_items_attributes_new_items__destroy\"><a class=\"cocooned-remove remove_fields\" data-cocooned-trigger=\"remove\" data-cocooned-persisted=\"false\" href=\"#\">Remove</a> <a class=\"cocooned-move-up\" data-cocooned-trigger=\"up\" href=\"#\">Move up</a> <a class=\"cocooned-move-down\" data-cocooned-trigger=\"down\" href=\"#\">Move down</a> <label for=\"list_items_attributes_new_items_label\">Label</label> <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\"> <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\"> </div></template> </div> </div> <div class=\"actions\"> <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\"> </div> </form>","button":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\"> <div class=\"field\"> <label for=\"list_name\">Name</label> <input type=\"text\" name=\"list[name]\" id=\"list_name\"> </div> <h3>Items</h3> <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'> <div> <button name=\"button\" type=\"button\" partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"b070d9f4-9fa6-445f-985c-31cc33dcc5c9\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\">Add item</button><template data-name=\"b070d9f4-9fa6-445f-985c-31cc33dcc5c9\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\"> <input value=\"false\" autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][_destroy]\" id=\"list_items_attributes_new_items__destroy\"><button name=\"button\" type=\"button\" class=\"cocooned-remove remove_fields\" data-cocooned-trigger=\"remove\" data-cocooned-persisted=\"false\">Remove</button> <button name=\"button\" type=\"button\" class=\"cocooned-move-up\" data-cocooned-trigger=\"up\">Move up</button> <button name=\"button\" type=\"button\" class=\"cocooned-move-down\" data-cocooned-trigger=\"down\">Move down</button> <label for=\"list_items_attributes_new_items_label\">Label</label> <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\"> <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\"> </div></template> </div> </div> <div class=\"actions\"> <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\"> </div> </form>"}
{"link":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\"> <div class=\"field\"> <label for=\"list_name\">Name</label> <input type=\"text\" name=\"list[name]\" id=\"list_name\"> </div> <h3>Items</h3> <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'> <div> <a partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"f56d387d-c8dd-483b-9aef-810c3618030e\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\" href=\"#\">Add item</a><template data-name=\"f56d387d-c8dd-483b-9aef-810c3618030e\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\"> <input value=\"false\" autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][_destroy]\" id=\"list_items_attributes_new_items__destroy\"><a class=\"cocooned-remove remove_fields\" data-cocooned-trigger=\"remove\" data-cocooned-persisted=\"false\" href=\"#\">Remove</a> <a class=\"cocooned-move-up\" data-cocooned-trigger=\"up\" href=\"#\">Move up</a> <a class=\"cocooned-move-down\" data-cocooned-trigger=\"down\" href=\"#\">Move down</a> <label for=\"list_items_attributes_new_items_label\">Label</label> <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\"> <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\"> </div></template> </div> </div> <div class=\"actions\"> <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\"> </div> </form>","button":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\"> <div class=\"field\"> <label for=\"list_name\">Name</label> <input type=\"text\" name=\"list[name]\" id=\"list_name\"> </div> <h3>Items</h3> <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'> <div> <button name=\"button\" type=\"button\" partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"56ce34dd-1aed-4e8f-9580-3d8510eda321\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\">Add item</button><template data-name=\"56ce34dd-1aed-4e8f-9580-3d8510eda321\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\"> <input value=\"false\" autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][_destroy]\" id=\"list_items_attributes_new_items__destroy\"><button name=\"button\" type=\"button\" class=\"cocooned-remove remove_fields\" data-cocooned-trigger=\"remove\" data-cocooned-persisted=\"false\">Remove</button> <button name=\"button\" type=\"button\" class=\"cocooned-move-up\" data-cocooned-trigger=\"up\">Move up</button> <button name=\"button\" type=\"button\" class=\"cocooned-move-down\" data-cocooned-trigger=\"down\">Move down</button> <label for=\"list_items_attributes_new_items_label\">Label</label> <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\"> <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\"> </div></template> </div> </div> <div class=\"actions\"> <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\"> </div> </form>"}
Loading

0 comments on commit c82b13a

Please sign in to comment.