Skip to content

Commit

Permalink
Rails 8.0 compatibility (#86)
Browse files Browse the repository at this point in the history
* Update Github Actions configuration
* Update development environment to Rails 8
* Suppress deprecation warning
* Update NPM dependencies
* Update JS specs fixtures
* Update changelog
  • Loading branch information
gael-ian authored Nov 25, 2024
1 parent 0ee7131 commit 95bc975
Show file tree
Hide file tree
Showing 9 changed files with 1,477 additions and 1,580 deletions.
9 changes: 8 additions & 1 deletion .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,18 @@ jobs:
Gemfile
]
exclude:
# Exclude rubies < 3.1 for ActiveModel >= 7.2
# Exclude rubies < 3.1 for ActiveModel ~> 7.2
- ruby: "2.7"
gemfile: dev/gemfiles/rails-7.2.x.gemfile
- ruby: "3.0"
gemfile: dev/gemfiles/rails-7.2.x.gemfile
# Exclude rubies < 3.2 for ActiveModel ~> 8.0
- ruby: "2.7"
gemfile: Gemfile
- ruby: "3.0"
gemfile: Gemfile
- ruby: "3.1"
gemfile: Gemfile
env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}
steps:
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 support for Rails 8.0 (#86)

## Version 2.4.0 (2024-10-01)

### Fixed
Expand Down
175 changes: 88 additions & 87 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,72 +2,72 @@ PATH
remote: .
specs:
cocooned (2.4.0)
rails (>= 7.0, <= 8.0)
rails (>= 7.0, <= 8.1)

GEM
remote: https://rubygems.org/
specs:
actioncable (7.2.1)
actionpack (= 7.2.1)
activesupport (= 7.2.1)
actioncable (8.0.0)
actionpack (= 8.0.0)
activesupport (= 8.0.0)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
actionmailbox (7.2.1)
actionpack (= 7.2.1)
activejob (= 7.2.1)
activerecord (= 7.2.1)
activestorage (= 7.2.1)
activesupport (= 7.2.1)
actionmailbox (8.0.0)
actionpack (= 8.0.0)
activejob (= 8.0.0)
activerecord (= 8.0.0)
activestorage (= 8.0.0)
activesupport (= 8.0.0)
mail (>= 2.8.0)
actionmailer (7.2.1)
actionpack (= 7.2.1)
actionview (= 7.2.1)
activejob (= 7.2.1)
activesupport (= 7.2.1)
actionmailer (8.0.0)
actionpack (= 8.0.0)
actionview (= 8.0.0)
activejob (= 8.0.0)
activesupport (= 8.0.0)
mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
actionpack (7.2.1)
actionview (= 7.2.1)
activesupport (= 7.2.1)
actionpack (8.0.0)
actionview (= 8.0.0)
activesupport (= 8.0.0)
nokogiri (>= 1.8.5)
racc
rack (>= 2.2.4, < 3.2)
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 (7.2.1)
actionpack (= 7.2.1)
activerecord (= 7.2.1)
activestorage (= 7.2.1)
activesupport (= 7.2.1)
actiontext (8.0.0)
actionpack (= 8.0.0)
activerecord (= 8.0.0)
activestorage (= 8.0.0)
activesupport (= 8.0.0)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.2.1)
activesupport (= 7.2.1)
actionview (8.0.0)
activesupport (= 8.0.0)
builder (~> 3.1)
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
activejob (7.2.1)
activesupport (= 7.2.1)
activejob (8.0.0)
activesupport (= 8.0.0)
globalid (>= 0.3.6)
activemodel (7.2.1)
activesupport (= 7.2.1)
activerecord (7.2.1)
activemodel (= 7.2.1)
activesupport (= 7.2.1)
activemodel (8.0.0)
activesupport (= 8.0.0)
activerecord (8.0.0)
activemodel (= 8.0.0)
activesupport (= 8.0.0)
timeout (>= 0.4.0)
activestorage (7.2.1)
actionpack (= 7.2.1)
activejob (= 7.2.1)
activerecord (= 7.2.1)
activesupport (= 7.2.1)
activestorage (8.0.0)
actionpack (= 8.0.0)
activejob (= 8.0.0)
activerecord (= 8.0.0)
activesupport (= 8.0.0)
marcel (~> 1.0)
activesupport (7.2.1)
activesupport (8.0.0)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
Expand All @@ -77,15 +77,17 @@ GEM
minitest (>= 5.1)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
uri (>= 0.13.1)
ast (2.4.2)
base64 (0.2.0)
benchmark (0.4.0)
bigdecimal (3.1.8)
builder (3.3.0)
byebug (11.1.3)
concurrent-ruby (1.3.4)
connection_pool (2.4.1)
crass (1.0.6)
date (3.3.4)
date (3.4.0)
diff-lcs (1.5.1)
docile (1.4.1)
drb (2.2.1)
Expand All @@ -100,10 +102,10 @@ GEM
irb (1.14.1)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
json (2.7.2)
json (2.8.2)
language_server-protocol (3.17.0.3)
logger (1.6.1)
loofah (2.22.0)
loofah (2.23.1)
crass (~> 1.0.2)
nokogiri (>= 1.12.0)
mail (2.8.1)
Expand All @@ -113,9 +115,9 @@ GEM
net-smtp
marcel (1.0.4)
mini_mime (1.1.5)
mini_portile2 (2.8.7)
minitest (5.25.1)
net-imap (0.4.16)
mini_portile2 (2.8.8)
minitest (5.25.2)
net-imap (0.5.1)
date
net-protocol
net-pop (0.1.2)
Expand All @@ -124,81 +126,80 @@ GEM
timeout
net-smtp (0.5.0)
net-protocol
nio4r (2.7.3)
nio4r (2.7.4)
nokogiri (1.16.7)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.16.7-x86_64-linux)
racc (~> 1.4)
package_json (0.1.0)
parallel (1.26.3)
parser (3.3.5.0)
parser (3.3.6.0)
ast (~> 2.4.1)
racc
psych (5.1.2)
psych (5.2.0)
stringio
puma (6.4.3)
puma (6.5.0)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.1.7)
rack (3.1.8)
rack-proxy (0.7.7)
rack
rack-session (2.0.0)
rack (>= 3.0.0)
rack-test (2.1.0)
rack (>= 1.3)
rackup (2.1.0)
rackup (2.2.1)
rack (>= 3)
webrick (~> 1.8)
rails (7.2.1)
actioncable (= 7.2.1)
actionmailbox (= 7.2.1)
actionmailer (= 7.2.1)
actionpack (= 7.2.1)
actiontext (= 7.2.1)
actionview (= 7.2.1)
activejob (= 7.2.1)
activemodel (= 7.2.1)
activerecord (= 7.2.1)
activestorage (= 7.2.1)
activesupport (= 7.2.1)
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)
bundler (>= 1.15.0)
railties (= 7.2.1)
railties (= 8.0.0)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
nokogiri (>= 1.6)
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
railties (7.2.1)
actionpack (= 7.2.1)
activesupport (= 7.2.1)
railties (8.0.0)
actionpack (= 8.0.0)
activesupport (= 8.0.0)
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.7.0)
rdoc (6.8.1)
psych (>= 4.0.0)
regexp_parser (2.9.2)
reline (0.5.10)
reline (0.5.11)
io-console (~> 0.5)
rspec (3.13.0)
rspec-core (~> 3.13.0)
rspec-expectations (~> 3.13.0)
rspec-mocks (~> 3.13.0)
rspec-core (3.13.1)
rspec-core (3.13.2)
rspec-support (~> 3.13.0)
rspec-expectations (3.13.3)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-mocks (3.13.1)
rspec-mocks (3.13.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0)
rspec-rails (7.0.1)
rspec-rails (7.1.0)
actionpack (>= 7.0)
activesupport (>= 7.0)
railties (>= 7.0)
Expand All @@ -207,7 +208,7 @@ GEM
rspec-mocks (~> 3.13)
rspec-support (~> 3.13)
rspec-support (3.13.1)
rubocop (1.66.1)
rubocop (1.68.0)
json (~> 2.3)
language_server-protocol (>= 3.17.0)
parallel (~> 1.10)
Expand All @@ -217,26 +218,26 @@ GEM
rubocop-ast (>= 1.32.2, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 3.0)
rubocop-ast (1.32.3)
rubocop-ast (1.36.1)
parser (>= 3.3.1.0)
rubocop-performance (1.22.1)
rubocop-performance (1.23.0)
rubocop (>= 1.48.1, < 2.0)
rubocop-ast (>= 1.31.1, < 2.0)
rubocop-rails (2.26.2)
rubocop-rails (2.27.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.1.0)
rubocop-rspec (3.2.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.1)
semantic_range (3.0.0)
securerandom (0.3.2)
semantic_range (3.1.0)
shakapacker (8.0.2)
activesupport (>= 5.2)
package_json
Expand All @@ -252,21 +253,21 @@ GEM
simplecov_json_formatter (~> 0.1)
simplecov-html (0.13.1)
simplecov_json_formatter (0.1.4)
sqlite3 (2.1.0)
sqlite3 (2.3.0)
mini_portile2 (~> 2.8.0)
sqlite3 (2.1.0-x86_64-linux-gnu)
stringio (3.1.1)
sqlite3 (2.3.0-x86_64-linux-gnu)
stringio (3.1.2)
thor (1.3.2)
timeout (0.4.1)
timeout (0.4.2)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (2.6.0)
uri (1.0.2)
useragent (0.16.10)
webrick (1.8.2)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
zeitwerk (2.6.18)
zeitwerk (2.7.1)

PLATFORMS
ruby
Expand Down
2 changes: 1 addition & 1 deletion cocooned.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
end
spec.required_ruby_version = '>= 2.7'

spec.add_dependency 'rails', '>= 7.0', '<= 8.0'
spec.add_dependency 'rails', '>= 7.0', '<= 8.1'

spec.add_development_dependency 'bundler', '~> 2.1'
spec.add_development_dependency 'rake', '~> 13.0'
Expand Down
19 changes: 19 additions & 0 deletions dev/gemfiles/rails-7.2.x.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# frozen_string_literal: true

source 'http://rubygems.org'

gemspec path: '../..'

group :development, :test do
gem 'psych', '< 4.0.0'
gem 'puma'
gem 'rails', '~> 7.2.0'
gem 'shakapacker', '~> 7.1.0'
gem 'sqlite3', '~> 1.4'

gem 'formtastic', '~> 5.0'
gem 'nokogiri'
gem 'rspec-rails', '~> 6.0'
gem 'simplecov', require: false
gem 'simple_form', '~> 5.1'
end
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\">\n\n <div class=\"field\">\n <label for=\"list_name\">Name</label>\n <input type=\"text\" name=\"list[name]\" id=\"list_name\">\n </div>\n\n <h3>Items</h3>\n <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'>\n \n <div>\n <a partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"956ed3f9-79d6-4412-8697-538d7dab8223\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\" href=\"#\">Add item</a><template data-name=\"956ed3f9-79d6-4412-8697-538d7dab8223\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\">\n <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>\n <a class=\"cocooned-move-up\" data-cocooned-trigger=\"up\" href=\"#\">Move up</a>\n <a class=\"cocooned-move-down\" data-cocooned-trigger=\"down\" href=\"#\">Move down</a>\n\n <label for=\"list_items_attributes_new_items_label\">Label</label>\n <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\">\n <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\">\n</div></template>\n </div>\n</div>\n <div class=\"actions\">\n <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\">\n </div>\n</form>","button":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\">\n\n <div class=\"field\">\n <label for=\"list_name\">Name</label>\n <input type=\"text\" name=\"list[name]\" id=\"list_name\">\n </div>\n\n <h3>Items</h3>\n <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'>\n \n <div>\n <button name=\"button\" type=\"button\" partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"23877226-6900-4e37-968a-5f9f182bae36\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\">Add item</button><template data-name=\"23877226-6900-4e37-968a-5f9f182bae36\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\">\n <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>\n <button name=\"button\" type=\"button\" class=\"cocooned-move-up\" data-cocooned-trigger=\"up\">Move up</button>\n <button name=\"button\" type=\"button\" class=\"cocooned-move-down\" data-cocooned-trigger=\"down\">Move down</button>\n\n <label for=\"list_items_attributes_new_items_label\">Label</label>\n <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\">\n <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\">\n</div></template>\n </div>\n</div>\n <div class=\"actions\">\n <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\">\n </div>\n</form>"}
{"link":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\">\n\n <div class=\"field\">\n <label for=\"list_name\">Name</label>\n <input type=\"text\" name=\"list[name]\" id=\"list_name\">\n </div>\n\n <h3>Items</h3>\n <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'>\n \n <div>\n <a partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"2845c7a1-98cf-46e3-944a-6c02a9fc1fbe\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\" href=\"#\">Add item</a><template data-name=\"2845c7a1-98cf-46e3-944a-6c02a9fc1fbe\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\">\n <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>\n <a class=\"cocooned-move-up\" data-cocooned-trigger=\"up\" href=\"#\">Move up</a>\n <a class=\"cocooned-move-down\" data-cocooned-trigger=\"down\" href=\"#\">Move down</a>\n\n <label for=\"list_items_attributes_new_items_label\">Label</label>\n <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\">\n <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\">\n</div></template>\n </div>\n</div>\n <div class=\"actions\">\n <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\">\n </div>\n</form>","button":"<form action=\"/lists\" accept-charset=\"UTF-8\" method=\"post\">\n\n <div class=\"field\">\n <label for=\"list_name\">Name</label>\n <input type=\"text\" name=\"list[name]\" id=\"list_name\">\n </div>\n\n <h3>Items</h3>\n <div class=\"cocooned-container\" data-cocooned-container=\"true\" data-cocooned-options='{\"limit\":5,\"reorderable\":true}'>\n \n <div>\n <button name=\"button\" type=\"button\" partial=\"lists/form/item\" class=\"cocooned-add add_fields\" data-association=\"items\" data-template=\"d41e7f37-d38f-4c2c-885c-e6545e3b0883\" data-association-insertion-count=\"1\" data-cocooned-trigger=\"add\">Add item</button><template data-name=\"d41e7f37-d38f-4c2c-885c-e6545e3b0883\"><div class=\"cocooned-item nested-fields\" data-cocooned-item=\"true\">\n <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>\n <button name=\"button\" type=\"button\" class=\"cocooned-move-up\" data-cocooned-trigger=\"up\">Move up</button>\n <button name=\"button\" type=\"button\" class=\"cocooned-move-down\" data-cocooned-trigger=\"down\">Move down</button>\n\n <label for=\"list_items_attributes_new_items_label\">Label</label>\n <input type=\"text\" name=\"list[items_attributes][new_items][label]\" id=\"list_items_attributes_new_items_label\">\n <input autocomplete=\"off\" type=\"hidden\" name=\"list[items_attributes][new_items][position]\" id=\"list_items_attributes_new_items_position\">\n</div></template>\n </div>\n</div>\n <div class=\"actions\">\n <input type=\"submit\" name=\"commit\" value=\"Create List\" data-disable-with=\"Create List\">\n </div>\n</form>"}
Loading

0 comments on commit 95bc975

Please sign in to comment.