diff --git a/db/seeds.rb b/db/seeds.rb
index 370790e5139549e1297d07645e8ec791e4197380..9d25ef0a4e0ad1fb898200b30de9a68eede31b16 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 Chewy.strategy(:mastodon) do
-  Dir[Rails.root.join('db', 'seeds', '*.rb')].each do |seed|
+  Rails.root.glob('db/seeds/*.rb').each do |seed|
     load seed
   end
 end
diff --git a/lib/tasks/branding.rake b/lib/tasks/branding.rake
index be72454ce29eea8c832b2eb0ab98ea5ab24b60c1..1e2af1b44629c164380f64c4ba01a9a6b6322e2d 100644
--- a/lib/tasks/branding.rake
+++ b/lib/tasks/branding.rake
@@ -15,7 +15,7 @@ namespace :branding do
     output_dest  = Rails.root.join('app', 'javascript', 'images', 'mailer')
 
     # Displayed size is 64px, at 3x it's 192px
-    Dir[Rails.root.join('app', 'javascript', 'images', 'icons', '*.svg')].each do |path|
+    Rails.root.glob('app/javascript/images/icons/*.svg').each do |path|
       rsvg_convert.run(input: path, size: 192, output: output_dest.join("#{File.basename(path, '.svg')}.png"))
     end
 
diff --git a/lib/tasks/icons.rake b/lib/tasks/icons.rake
index 374ea149fee388fd2351e5c852624499eb7092a0..96e0a14315058481265a8d05d54b4895493878f9 100644
--- a/lib/tasks/icons.rake
+++ b/lib/tasks/icons.rake
@@ -20,7 +20,7 @@ end
 def find_used_icons
   icons_by_weight_and_size = {}
 
-  Dir[Rails.root.join('app', 'javascript', '**', '*.*s*')].map do |path|
+  Rails.root.glob('app/javascript/**/*.*s*').map do |path|
     File.open(path, 'r') do |file|
       pattern = %r{\Aimport .* from '@/material-icons/(?<weight>[0-9]+)-(?<size>[0-9]+)px/(?<icon>[^-]*)(?<fill>-fill)?.svg\?react';}
       file.each_line do |line|
diff --git a/lib/tasks/repo.rake b/lib/tasks/repo.rake
index b90b48934eeee05e4df701a610deba16fec1c118..539c44273f4a3a0762e7e0a7df9d0069b6eabe98 100644
--- a/lib/tasks/repo.rake
+++ b/lib/tasks/repo.rake
@@ -98,7 +98,7 @@ namespace :repo do
     missing_yaml_files = I18n.available_locales.reject { |locale| Rails.root.join('config', 'locales', "#{locale}.yml").exist? }
     missing_json_files = I18n.available_locales.reject { |locale| Rails.root.join('app', 'javascript', 'mastodon', 'locales', "#{locale}.json").exist? }
 
-    locales_in_files = Dir[Rails.root.join('config', 'locales', '*.yml')].map do |path|
+    locales_in_files = Rails.root.glob('config/locales/*.yml').map do |path|
       file_name = File.basename(path, '.yml')
       file_name.gsub(/\A(doorkeeper|devise|activerecord|simple_form)\./, '').to_sym
     end.uniq.compact
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index d4b9bddf93f12a989f608f00835df6c0674b2ddc..9af2d1e337e51233903f6e84384415d8bd0ec1f3 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -44,7 +44,7 @@ require 'chewy/rspec'
 require 'email_spec/rspec'
 require 'test_prof/recipes/rspec/before_all'
 
-Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
+Rails.root.glob('spec/support/**/*.rb').each { |f| require f }
 
 ActiveRecord::Migration.maintain_test_schema!
 WebMock.disable_net_connect!(
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 1f9cc40f12afd4b0e243d72f129da4c6cf3e9b61..496ebfd09d22674bad3b0d7596a51bb53d591000 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -28,7 +28,7 @@ RSpec.configure do |config|
   end
 
   config.after :suite do
-    FileUtils.rm_rf(Dir[Rails.root.join('spec', 'test_files')])
+    FileUtils.rm_rf(Rails.root.glob('spec/test_files'))
   end
 
   # Use the GitHub Annotations formatter for CI