diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 014103973..7cb8012e4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -58,6 +58,11 @@ jobs: orm: active_record adapter: sqlite3 asset: sprockets + - ruby: "3.3" + gemfile: gemfiles/rails_8.0.gemfile + orm: active_record + adapter: sqlite3 + asset: sprockets - ruby: "3.2" gemfile: gemfiles/composite_primary_keys.gemfile orm: active_record @@ -133,6 +138,8 @@ jobs: uses: actions/setup-node@v4 with: node-version: "18" + - name: Install ImageMagick + run: sudo apt-get install imagemagick - name: Setup application env: BUNDLE_GEMFILE: ../../${{ matrix.gemfile }} diff --git a/Appraisals b/Appraisals index fc378a6d4..112766ead 100644 --- a/Appraisals +++ b/Appraisals @@ -3,7 +3,7 @@ appraise 'rails-6.0' do gem 'rails', '~> 6.0.0' gem 'psych', '~> 3.3' - gem 'turbo-rails', ['!= 2.0.8', '!= 2.0.9'] + gem 'turbo-rails', '< 2.0.8' group :test do gem 'cancancan', ['~> 3.0', '< 3.6'] @@ -56,6 +56,10 @@ appraise 'rails-7.0' do gem 'importmap-rails', require: false group :active_record do + platforms :ruby, :mswin, :mingw, :x64_mingw do + gem 'sqlite3', '~> 1.3' + end + platforms :jruby do gem 'activerecord-jdbcmysql-adapter', '~> 70.0' gem 'activerecord-jdbcpostgresql-adapter', '~> 70.0' @@ -78,6 +82,12 @@ appraise 'rails-7.1' do gem 'rails', '~> 7.1.0' gem 'importmap-rails', require: false + group :active_record do + platforms :ruby, :mswin, :mingw, :x64_mingw do + gem 'sqlite3', '~> 1.3' + end + end + group :mongoid do gem 'cancancan-mongoid' gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid' @@ -94,10 +104,19 @@ appraise 'rails-7.2' do gem 'importmap-rails', require: false end +appraise 'rails-8.0' do + gem 'rails', '~> 8.0.0' + gem 'importmap-rails', require: false +end + appraise 'composite_primary_keys' do gem 'rails', '~> 7.0.0' group :active_record do gem 'composite_primary_keys' + + platforms :ruby, :mswin, :mingw, :x64_mingw do + gem 'sqlite3', '~> 1.3' + end end end diff --git a/CHANGELOG.md b/CHANGELOG.md index da3e7f896..73908df70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,23 @@ ## [Unreleased](https://github.com/railsadminteam/rails_admin/tree/HEAD) -[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0...HEAD) +[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.3.0...HEAD) + +## [3.3.0](https://github.com/railsadminteam/rails_admin/tree/v3.3.0) - 2024-12-08 + +[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.1...v3.3.0) + +### Added + +- Rails 8.0 support ([#3702](https://github.com/railsadminteam/rails_admin/pull/3702)) + +## [3.2.1](https://github.com/railsadminteam/rails_admin/tree/v3.2.0) - 2024-10-10 + +[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0...v3.2.1) + +### Fixed + +- Disable Turbo's prefetch behavior globally, to prevent custom actions unintentionally triggered ([f54a102](https://github.com/railsadminteam/rails_admin/commit/f54a102c6b0a420244ef044503944574ef1dfbd2), [#3701](https://github.com/railsadminteam/rails_admin/issues/3701)) ## [3.2.0](https://github.com/railsadminteam/rails_admin/tree/v3.2.0) - 2024-09-08 diff --git a/Gemfile b/Gemfile index 904083a02..0965e94b4 100644 --- a/Gemfile +++ b/Gemfile @@ -49,7 +49,7 @@ group :active_record do platforms :ruby, :mswin, :mingw, :x64_mingw do gem 'mysql2', '>= 0.3.14' gem 'pg', '>= 1.0.0' - gem 'sqlite3', '~> 1.3' + gem 'sqlite3', '>= 1.3.0' end end diff --git a/app/views/layouts/rails_admin/_head.html.erb b/app/views/layouts/rails_admin/_head.html.erb index d78e4366f..43ce0096d 100644 --- a/app/views/layouts/rails_admin/_head.html.erb +++ b/app/views/layouts/rails_admin/_head.html.erb @@ -2,6 +2,7 @@ + <%= csrf_meta_tag %> <% case RailsAdmin::config.asset_source when :webpacker %> diff --git a/gemfiles/rails_6.0.gemfile b/gemfiles/rails_6.0.gemfile index bcf282264..75954b32e 100644 --- a/gemfiles/rails_6.0.gemfile +++ b/gemfiles/rails_6.0.gemfile @@ -7,7 +7,7 @@ gem "devise", "~> 4.7" gem "net-smtp", require: false gem "rails", "~> 6.0.0" gem "sassc-rails", "~> 2.1" -gem "turbo-rails", ["!= 2.0.8", "!= 2.0.9"] +gem "turbo-rails", "< 2.0.8" gem "vite_rails", require: false gem "webpacker", require: false gem "webrick" @@ -48,7 +48,7 @@ group :active_record do platforms :ruby, :mswin, :mingw, :x64_mingw do gem "mysql2", ">= 0.3.14" gem "pg", ">= 1.0.0" - gem "sqlite3", "~> 1.3" + gem "sqlite3", ">= 1.3.0" end platforms :jruby do diff --git a/gemfiles/rails_6.1.gemfile b/gemfiles/rails_6.1.gemfile index 8c4b1c44c..cdf08f0c8 100644 --- a/gemfiles/rails_6.1.gemfile +++ b/gemfiles/rails_6.1.gemfile @@ -47,7 +47,7 @@ group :active_record do platforms :ruby, :mswin, :mingw, :x64_mingw do gem "mysql2", ">= 0.3.14" gem "pg", ">= 1.0.0" - gem "sqlite3", "~> 1.3" + gem "sqlite3", ">= 1.3.0" end platforms :jruby do diff --git a/gemfiles/rails_7.2.gemfile b/gemfiles/rails_7.2.gemfile index f0edccff8..94dc6a1fa 100644 --- a/gemfiles/rails_7.2.gemfile +++ b/gemfiles/rails_7.2.gemfile @@ -48,7 +48,7 @@ group :active_record do platforms :ruby, :mswin, :mingw, :x64_mingw do gem "mysql2", ">= 0.3.14" gem "pg", ">= 1.0.0" - gem "sqlite3", "~> 1.3" + gem "sqlite3", ">= 1.3.0" end end diff --git a/gemfiles/rails_8.0.gemfile b/gemfiles/rails_8.0.gemfile new file mode 100644 index 000000000..873be4570 --- /dev/null +++ b/gemfiles/rails_8.0.gemfile @@ -0,0 +1,55 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", ">= 2.0" +gem "devise", "~> 4.7" +gem "net-smtp", require: false +gem "rails", "~> 8.0.0" +gem "sassc-rails", "~> 2.1" +gem "turbo-rails" +gem "vite_rails", require: false +gem "webpacker", require: false +gem "webrick" +gem "importmap-rails", require: false + +group :development, :test do + gem "pry", ">= 0.9" +end + +group :test do + gem "cancancan", "~> 3.0" + gem "carrierwave", [">= 2.0.0.rc", "< 3"] + gem "cuprite", "!= 0.15.1" + gem "database_cleaner-active_record", ">= 2.0", require: false + gem "dragonfly", "~> 1.0" + gem "factory_bot", ">= 4.2", "!= 6.4.5" + gem "generator_spec", ">= 0.8" + gem "kt-paperclip" + gem "launchy", ">= 2.2" + gem "mini_magick", ">= 3.4" + gem "pundit" + gem "rack-cache", require: "rack/cache" + gem "rspec-expectations", "!= 3.8.3" + gem "rspec-rails", ">= 4.0.0.beta2" + gem "rspec-retry" + gem "rubocop", ["~> 1.20", "!= 1.22.2"], require: false + gem "rubocop-performance", require: false + gem "shrine", "~> 3.0" + gem "simplecov", ">= 0.9", require: false + gem "simplecov-lcov", require: false + gem "timecop", ">= 0.5" + gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby] +end + +group :active_record do + gem "paper_trail", ">= 12.0" + + platforms :ruby, :mswin, :mingw, :x64_mingw do + gem "mysql2", ">= 0.3.14" + gem "pg", ">= 1.0.0" + gem "sqlite3", ">= 1.3.0" + end +end + +gemspec path: "../" diff --git a/lib/rails_admin/version.rb b/lib/rails_admin/version.rb index bac655f18..6d0a8c5ce 100644 --- a/lib/rails_admin/version.rb +++ b/lib/rails_admin/version.rb @@ -3,7 +3,7 @@ module RailsAdmin class Version MAJOR = 3 - MINOR = 2 + MINOR = 3 PATCH = 0 PRE = nil diff --git a/package.json b/package.json index f46a77587..d60008df5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rails_admin", - "version": "3.2.0", + "version": "3.3.0", "description": "RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.", "homepage": "https://github.com/railsadminteam/rails_admin", "license": "MIT", diff --git a/rails_admin.gemspec b/rails_admin.gemspec index 1905c682f..27bc72b3d 100644 --- a/rails_admin.gemspec +++ b/rails_admin.gemspec @@ -8,7 +8,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'csv' spec.add_dependency 'kaminari', '>= 0.14', '< 2.0' spec.add_dependency 'nested_form', '~> 0.3' - spec.add_dependency 'rails', ['>= 6.0', '< 8'] + spec.add_dependency 'rails', ['>= 6.0', '< 9'] spec.add_dependency 'turbo-rails', ['>= 1.0', '< 3'] spec.add_development_dependency 'bundler', '>= 1.0' spec.authors = ['Erik Michaels-Ober', 'Bogdan Gaza', 'Petteri Kaapa', 'Benoit Benezech', 'Mitsuhiro Shibuya'] diff --git a/spec/dummy_app/Gemfile b/spec/dummy_app/Gemfile index 5a16903ea..f8c3ec1df 100644 --- a/spec/dummy_app/Gemfile +++ b/spec/dummy_app/Gemfile @@ -14,7 +14,7 @@ group :active_record do platforms :ruby, :mswin, :mingw do gem 'mysql2', '>= 0.3.14' gem 'pg', '>= 0.14' - gem 'sqlite3', '~> 1.3' + gem 'sqlite3', '>= 1.3.0' end gem 'paper_trail', '>= 12.0' @@ -26,7 +26,7 @@ gem 'devise', '>= 3.2' gem 'dragonfly', '~> 1.0' gem 'importmap-rails', require: false gem 'mini_magick', '>= 3.4' -gem 'mlb', '>= 0.7', github: 'mshibuya/mlb', branch: 'ruby-3' +gem 'mlb', '>= 0.7' gem 'paperclip', '>= 3.4' gem 'rails_admin', path: '../../' gem 'shrine', '~> 3.0' diff --git a/spec/dummy_app/Gemfile.rails6 b/spec/dummy_app/Gemfile.rails6 deleted file mode 100644 index 260b684c1..000000000 --- a/spec/dummy_app/Gemfile.rails6 +++ /dev/null @@ -1,49 +0,0 @@ -source 'https://rubygems.org' - -gem 'rails', '>= 6.0.0' -gem 'webpacker', require: false - -group :active_record do - platforms :jruby do - gem 'activerecord-jdbcmysql-adapter', '>= 1.2' - gem 'activerecord-jdbcpostgresql-adapter', '>= 1.2' - gem 'activerecord-jdbcsqlite3-adapter', '>= 1.2' - end - - platforms :ruby, :mswin, :mingw do - gem 'mysql2', '>= 0.3.14' - gem 'pg', '>= 0.14' - gem 'sqlite3', '>= 1.3.0' - end - - gem 'paper_trail', '>= 12.0' -end - -group :mongoid do - gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid' - gem 'kaminari-mongoid' - gem 'mongoid', ['>= 6.0', '< 8'] - gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip' - gem 'shrine-mongoid', '~> 1.0' -end - -gem 'carrierwave', '>= 2.0.0.rc', '< 3.0' -gem 'devise', '>= 3.2' -gem 'dragonfly', '~> 1.0' -gem 'mini_magick', '>= 3.4' -gem 'mlb', '>= 0.7', github: 'mshibuya/mlb', branch: 'ruby-3' -gem 'paperclip', '>= 3.4' -gem 'rails_admin', path: '../../' -gem 'shrine', '~> 3.0' -gem 'webrick' - -# Gems used only for assets and not required -# in production environments by default. -group :assets do - gem 'sassc-rails', '~> 2.1' - - # See https://github.com/sstephenson/execjs#readme for more supported runtimes - # gem 'therubyracer' - - gem 'uglifier', '>= 1.3' -end diff --git a/spec/integration/rails_admin_spec.rb b/spec/integration/rails_admin_spec.rb index 8040dcc82..26bb603f6 100644 --- a/spec/integration/rails_admin_spec.rb +++ b/spec/integration/rails_admin_spec.rb @@ -204,6 +204,13 @@ is_expected.to have_content 'Player failed to be updated' is_expected.to have_css '.filtering-select[data-input-for="player_team_id"]' end + + it 'does not prefetch pages' do + allow_any_instance_of(RailsAdmin::Config::Actions::Index).to receive(:controller).and_raise('index prefetched') + visit dashboard_path + find('.sidebar a.nav-link[href$="/player"]').hover + sleep 0.3 # Turbo waits 100ms before prefetch + end end describe 'dom_ready events', js: true do diff --git a/spec/rails_admin/config/fields/types/json_spec.rb b/spec/rails_admin/config/fields/types/json_spec.rb index a1e039582..a749d9302 100644 --- a/spec/rails_admin/config/fields/types/json_spec.rb +++ b/spec/rails_admin/config/fields/types/json_spec.rb @@ -24,7 +24,7 @@ it 'returns correct value for empty json' do allow(object).to receive(:json_field) { {} } actual = field.with(bindings).formatted_value - expect(actual).to match(/{\n+}/) + expect(actual).to match(/{\n*}/) end it 'retuns correct value' do @@ -72,7 +72,7 @@ it 'returns correct value for empty json' do allow(object).to receive(:json_field) { {} } actual = field.with(bindings).export_value - expect(actual).to match(/{\n+}/) + expect(actual).to match(/{\n*}/) end it 'returns correct value' do