Skip to content

Commit 10c6edc

Browse files
committed
Update to Rails 7
1 parent 5b698f9 commit 10c6edc

26 files changed

+298
-548
lines changed

Diff for: Rakefile

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
#!/usr/bin/env rake
2-
# frozen_string_literal: true
3-
41
# Add your own tasks in files placed in lib/tasks ending in .rake,
52
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
63

7-
require File.expand_path('../config/application', __FILE__)
4+
require_relative 'config/application'
85

9-
Osem::Application.load_tasks
6+
Rails.application.load_tasks

Diff for: bin/bundle

+119-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,120 @@
11
#!/usr/bin/env ruby
2-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3-
load Gem.bin_path('bundler', 'bundle')
2+
# frozen_string_literal: true
3+
4+
#
5+
# This file was generated by Bundler.
6+
#
7+
# The application 'bundle' is installed as part of a gem, and
8+
# this file is here to facilitate running it.
9+
#
10+
11+
require 'rubygems'
12+
13+
m = Module.new do
14+
module_function
15+
16+
def invoked_as_script?
17+
File.expand_path($0) == File.expand_path(__FILE__)
18+
end
19+
20+
def env_var_version
21+
ENV['BUNDLER_VERSION']
22+
end
23+
24+
def cli_arg_version
25+
return unless invoked_as_script? # don't want to hijack other binstubs
26+
return unless 'update'.start_with?(ARGV.first || ' ') # must be running `bundle update`
27+
28+
bundler_version = nil
29+
update_index = nil
30+
ARGV.each_with_index do |a, i|
31+
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
32+
bundler_version = a
33+
end
34+
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
35+
36+
bundler_version = Regexp.last_match(1)
37+
update_index = i
38+
end
39+
bundler_version
40+
end
41+
42+
def gemfile
43+
gemfile = ENV['BUNDLE_GEMFILE']
44+
return gemfile if gemfile && !gemfile.empty?
45+
46+
File.expand_path('../../Gemfile', __FILE__)
47+
end
48+
49+
def lockfile
50+
lockfile =
51+
case File.basename(gemfile)
52+
when 'gems.rb' then gemfile.sub(/\.rb$/, gemfile)
53+
else "#{gemfile}.lock"
54+
end
55+
File.expand_path(lockfile)
56+
end
57+
58+
def lockfile_version
59+
return unless File.file?(lockfile)
60+
61+
lockfile_contents = File.read(lockfile)
62+
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
63+
64+
Regexp.last_match(1)
65+
end
66+
67+
def bundler_requirement
68+
@bundler_requirement ||=
69+
env_var_version || cli_arg_version ||
70+
bundler_requirement_for(lockfile_version)
71+
end
72+
73+
def bundler_requirement_for(version)
74+
return "#{Gem::Requirement.default}.a" unless version
75+
76+
bundler_gem_version = Gem::Version.new(version)
77+
78+
requirement = bundler_gem_version.approximate_recommendation
79+
80+
return requirement unless Gem.rubygems_version < Gem::Version.new('2.7.0')
81+
82+
requirement += '.a' if bundler_gem_version.prerelease?
83+
84+
requirement
85+
end
86+
87+
def load_bundler!
88+
ENV['BUNDLE_GEMFILE'] ||= gemfile
89+
90+
activate_bundler
91+
end
92+
93+
def activate_bundler
94+
gem_error = activation_error_handling do
95+
gem 'bundler', bundler_requirement
96+
end
97+
return if gem_error.nil?
98+
99+
require_error = activation_error_handling do
100+
require 'bundler/version'
101+
end
102+
return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
103+
104+
warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
105+
exit 42
106+
end
107+
108+
def activation_error_handling
109+
yield
110+
nil
111+
rescue StandardError, LoadError => e
112+
e
113+
end
114+
end
115+
116+
m.load_bundler!
117+
118+
if m.invoked_as_script?
119+
load Gem.bin_path('bundler', 'bundle')
120+
end

Diff for: bin/rspec

+27-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,29 @@
11
#!/usr/bin/env ruby
2-
begin
3-
load File.expand_path("../spring", __FILE__)
4-
rescue LoadError
2+
# frozen_string_literal: true
3+
4+
#
5+
# This file was generated by Bundler.
6+
#
7+
# The application 'rspec' is installed as part of a gem, and
8+
# this file is here to facilitate running it.
9+
#
10+
11+
require "pathname"
12+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile.next",
13+
Pathname.new(__FILE__).realpath)
14+
15+
bundle_binstub = File.expand_path("../bundle", __FILE__)
16+
17+
if File.file?(bundle_binstub)
18+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19+
load(bundle_binstub)
20+
else
21+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23+
end
524
end
6-
require 'bundler/setup'
7-
load Gem.bin_path('rspec-core', 'rspec')
25+
26+
require "rubygems"
27+
require "bundler/setup"
28+
29+
load Gem.bin_path("rspec-core", "rspec")

Diff for: bin/setup

-33
This file was deleted.

Diff for: bin/update

-29
This file was deleted.

Diff for: config.ru

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
require_relative 'config/environment'
66

77
run Rails.application
8-
Rails.application.load_server if Rails::VERSION::MAJOR == 6
8+
Rails.application.load_server if Rails::VERSION::MAJOR == 7

Diff for: config/application.rb

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
11
require_relative 'boot'
22

3-
require 'rails/all'
3+
require 'rails'
4+
# Pick the frameworks you want:
5+
require 'active_model/railtie'
6+
# require 'active_job/railtie'
7+
require 'active_record/railtie'
8+
# require 'active_storage/engine'
9+
require 'action_controller/railtie'
10+
require 'action_mailer/railtie'
11+
# require 'action_mailbox/engine'
12+
# require 'action_text/engine'
13+
require 'action_view/railtie'
14+
# require 'action_cable/engine'
15+
require 'rails/test_unit/railtie'
416

517
# Require the gems listed in Gemfile, including any gems
618
# you've limited to :test, :development, or :production.
@@ -9,7 +21,7 @@
921
module Osem
1022
class Application < Rails::Application
1123
# Initialize configuration defaults for originally generated Rails version.
12-
config.load_defaults 5.0
24+
config.load_defaults 7.0
1325

1426
# Configuration for the application, engines, and railties goes here.
1527
#
@@ -19,8 +31,7 @@ class Application < Rails::Application
1931
config.time_zone = ENV.fetch('OSEM_TIME_ZONE') { 'UTC' }
2032
# Enable escaping HTML in JSON.
2133
config.active_support.escape_html_entities_in_json = true
22-
config.active_record.sqlite3.represent_boolean_as_integer = false
23-
# Require `belongs_to` associations by default. Previous versions had false.
24-
config.active_record.belongs_to_required_by_default = false
34+
# Don't generate system test files.
35+
config.generators.system_tests = nil
2536
end
2637
end

Diff for: config/cable.yml

-10
This file was deleted.

0 commit comments

Comments
 (0)