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