]> git.openstreetmap.org Git - rails.git/commitdiff
Drop support for ruby 3.0
authorTom Hughes <tom@compton.nu>
Tue, 13 Aug 2024 20:05:51 +0000 (21:05 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 17 Sep 2024 19:39:22 +0000 (20:39 +0100)
Also add Ubuntu 24.04 and drop 20.04 as 24.04 is needed for
ruby 3.1 without rvm so we should test it.

15 files changed:
.github/workflows/lint.yml
.github/workflows/tests.yml
.rubocop.yml
Gemfile
Gemfile.lock
INSTALL.md
Vagrantfile
app/controllers/api_controller.rb
app/controllers/application_controller.rb
app/helpers/browse_helper.rb
app/helpers/user_mailer_helper.rb
app/mailers/user_mailer.rb
lib/classic_pagination/pagination.rb
test/application_system_test_case.rb
test/test_helper.rb

index 9fc1320141d9f50d0ac19a5940bc48fdbe9dd87f..343084b0f8b6b4c52efb4e1f8887f450a7c465ff 100644 (file)
@@ -7,7 +7,7 @@ concurrency:
   cancel-in-progress: true
 env:
   os: ubuntu-22.04
-  ruby: '3.0'
+  ruby: '3.1'
 jobs:
   rubocop:
     name: RuboCop
index 46ab75482815eb90b5d9aa23f7a8ac8e4418f6f5..6e2b77059d1d4df4204cad333906129a299f1732 100644 (file)
@@ -10,8 +10,8 @@ jobs:
     name: Ubuntu ${{ matrix.ubuntu }}, Ruby ${{ matrix.ruby }}
     strategy:
       matrix:
-        ubuntu: [20.04, 22.04]
-        ruby: ['3.0', '3.1', '3.2', '3.3']
+        ubuntu: [22.04, 24.04]
+        ruby: ['3.1', '3.2', '3.3']
     runs-on: ubuntu-${{ matrix.ubuntu }}
     env:
       RAILS_ENV: test
index c0f0c1fa08053ec082a77ae9cd8e6e3d0facb874..8b6ed018032c66c116e4b08fe6ba697e9c608a9d 100644 (file)
@@ -9,7 +9,7 @@ require:
   - rubocop-rake
 
 AllCops:
-  TargetRubyVersion: 3.0
+  TargetRubyVersion: 3.1
   NewCops: enable
   Exclude:
     - 'vendor/**/*'
diff --git a/Gemfile b/Gemfile
index 27f295eb654f1ff36bd7c248aae85ecd37b08b01..ffcbc82fdaf877668f69f0a6e97ea41811a919a1 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -130,7 +130,7 @@ gem "gd2-ffij", ">= 0.4.0"
 gem "marcel"
 
 # Used for browser detection
-gem "browser", "< 6" # for ruby 3.0 support
+gem "browser", "< 6" # for ruby 3.1 support
 
 # Used for S3 object storage
 gem "aws-sdk-s3"
@@ -141,9 +141,6 @@ gem "image_processing"
 # Used to validate widths
 gem "unicode-display_width"
 
-# Keep ruby 3.0 compatibility
-gem "multi_xml", "~> 0.6.0"
-
 # Gems useful for development
 group :development do
   gem "better_errors"
index 1012a09dba6bf77628932b1f2afbcb9f7705f31d..f537a36548197a622c2ec9dc2f67a203a38c95f0 100644 (file)
@@ -344,7 +344,8 @@ GEM
       minitest (>= 4, < 6)
     msgpack (1.7.2)
     multi_json (1.15.0)
-    multi_xml (0.6.0)
+    multi_xml (0.7.1)
+      bigdecimal (~> 3.1)
     mutex_m (0.2.0)
     net-http (0.4.1)
       uri
@@ -670,7 +671,6 @@ DEPENDENCIES
   minitest (~> 5.1)
   minitest-focus
   multi_json
-  multi_xml (~> 0.6.0)
   omniauth (~> 2.0.2)
   omniauth-facebook
   omniauth-github
index c8e28a62fbc20cd2b06166cbf2992dc91968946b..8667fb5129161efca38295559202e64fd86475b4 100644 (file)
@@ -9,7 +9,7 @@ are two alternatives which make it easier to get a consistent development enviro
 * **Vagrant** This installs the software into a virtual machine. For Vagrant instructions see [VAGRANT.md](VAGRANT.md).
 * **Docker** This installs the software using containerization. For Docker instructions see [DOCKER.md](DOCKER.md).
 
-These instructions are based on Ubuntu 22.04 LTS, which is the platform used by the OSMF servers.
+These instructions are based on Ubuntu 24.04 LTS, which is the platform used by the OSMF servers.
 The instructions also work, with only minor amendments, for all other current Ubuntu releases, Fedora and MacOSX
 
 We don't recommend attempting to develop or deploy this software on Windows. Some Ruby gems may not be supported. If you need to use Windows the easiest solutions in order are [Docker](DOCKER.md), [Vagrant](VAGRANT.md), and Ubuntu in a virtual machine.
@@ -22,12 +22,12 @@ of packages required before you can get the various gems installed.
 
 ## Minimum requirements
 
-* Ruby 3.0+
+* Ruby 3.1+
 * PostgreSQL 13+
 * Bundler (see note below about [developer Ruby setup](#rbenv))
 * Javascript Runtime
 
-These can be installed on Ubuntu 22.04 or later with:
+These can be installed on Ubuntu 24.04 or later with:
 
 ```
 sudo apt-get update
index 7895d3b86cc4c0f6bf25bb5997fc6343d4286a2c..c2869cd5f661c38846251efee9d222a23de08ecd 100644 (file)
@@ -4,7 +4,7 @@
 Vagrant.configure("2") do |config|
   # use official ubuntu image for virtualbox
   config.vm.provider "virtualbox" do |vb, override|
-    override.vm.box = "ubuntu/jammy64"
+    override.vm.box = "ubuntu/noble64"
     override.vm.synced_folder ".", "/srv/openstreetmap-website"
     vb.customize ["modifyvm", :id, "--memory", "4096"]
     vb.customize ["modifyvm", :id, "--cpus", "2"]
@@ -16,13 +16,13 @@ Vagrant.configure("2") do |config|
 
   # use third party image and sshfs or NFS sharing for lxc
   config.vm.provider "lxc" do |_, override|
-    override.vm.box = "generic/ubuntu2204"
+    override.vm.box = "generic/ubuntu2404"
     override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => sharing_type
   end
 
   # use third party image and sshfs or NFS sharing for libvirt
   config.vm.provider "libvirt" do |_, override|
-    override.vm.box = "generic/ubuntu2204"
+    override.vm.box = "generic/ubuntu2404"
     override.vm.synced_folder ".", "/srv/openstreetmap-website", :type => sharing_type
   end
 
index 5b264db970aeb19a8b7a4efd6eeec31a787e78e9..84398ad617ac8299849b68e464f5aa568eec3b51 100644 (file)
@@ -142,8 +142,8 @@ class ApiController < ApplicationController
 
   ##
   # wrap an api call in a timeout
-  def api_call_timeout(&block)
-    Timeout.timeout(Settings.api_timeout, &block)
+  def api_call_timeout(&)
+    Timeout.timeout(Settings.api_timeout, &)
   rescue ActionView::Template::Error => e
     e = e.cause
 
index fdc2ac4e8694191790ffadab11ae9bbe5e55dc54..7ce804ced01af000ada0560ee4f27f99046618ac 100644 (file)
@@ -215,10 +215,10 @@ class ApplicationController < ActionController::Base
 
   ##
   # wrap a web page in a timeout
-  def web_timeout(&block)
+  def web_timeout(&)
     raise Timeout::Error if Settings.web_timeout.negative?
 
-    Timeout.timeout(Settings.web_timeout, &block)
+    Timeout.timeout(Settings.web_timeout, &)
   rescue ActionView::Template::Error => e
     e = e.cause
 
index 9ea38481137d77afeb46ccfe615860e4b2cecf24..69a8f8fa2e57eb5b76a717f98506c5f4752c33da 100644 (file)
@@ -44,9 +44,9 @@ module BrowseHelper
     t "printable_name.version", :version => object.version
   end
 
-  def element_strikethrough(object, &block)
+  def element_strikethrough(object, &)
     if object.redacted? || !object.visible?
-      tag.s(&block)
+      tag.s(&)
     else
       yield
     end
index e5d6e39aca4a6259f95a92c1ed2c873d63877ed0..d47827074afd0c939facc643d5b246e5233df517 100644 (file)
@@ -18,10 +18,10 @@ module UserMailerHelper
     )
   end
 
-  def message_body(&block)
+  def message_body(&)
     render(
       :partial => "message_body",
-      :locals => { :body => capture(&block) }
+      :locals => { :body => capture(&) }
     )
   end
 
index 86e77703b697569f021e281e575349c8595753b2..dee3dafbed35562ab865f11c64fcad4d61e8a067 100644 (file)
@@ -247,8 +247,8 @@ class UserMailer < ApplicationMailer
     end
   end
 
-  def with_recipient_locale(recipient, &block)
-    I18n.with_locale(Locale.available.preferred(recipient.preferred_languages), &block)
+  def with_recipient_locale(recipient, &)
+    I18n.with_locale(Locale.available.preferred(recipient.preferred_languages), &)
   end
 
   def from_address(name, type, id, token, user_id = nil)
index c7022e0b0b914707c549c458f347f89b8bc530a4..b54b0e9f85a8b316ea296f1a42fae66720548784 100644 (file)
@@ -288,7 +288,7 @@ module ActionController
       end
 
       # Successively yields all the paginator's pages to the given block.
-      def each(&_block)
+      def each(&)
         page_count.times do |n|
           yield self[n + 1]
         end
index 63c8090a83d735929ab1421fcafb0d935dc813aa..d2c3d5196ab9b5ccbcae32aaaed086e03650d7f5 100644 (file)
@@ -38,7 +38,7 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
     click_on "Logout", :match => :first
   end
 
-  def within_sidebar(&block)
-    within "#sidebar_content", &block
+  def within_sidebar(&)
+    within("#sidebar_content", &)
   end
 end
index 171028f4bbabbb376a356137fdb737ede028316d..79d5d0d33664e53769d575684ae9dc86e7445c3c 100644 (file)
@@ -340,10 +340,10 @@ module ActiveSupport
       Settings.merge!(saved_settings)
     end
 
-    def with_user_account_deletion_delay(value, &block)
+    def with_user_account_deletion_delay(value, &)
       freeze_time
 
-      with_settings(:user_account_deletion_delay => value, &block)
+      with_settings(:user_account_deletion_delay => value, &)
     ensure
       unfreeze_time
     end