Skip to content

Commit 8bcc36e

Browse files
committed
Patch doc generation for Rails 8.0.3
1 parent f14c5fc commit 8bcc36e

File tree

4 files changed

+353
-0
lines changed

4 files changed

+353
-0
lines changed

lib/generators/release.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ def before_generation
2222
# See the comment above for 4.2.9.
2323
contents.sub(/gem 'sdoc'.*/, "gem 'sdoc', '~> 0.4.0'")
2424
end
25+
elsif version_number == '8.0.3'
26+
# sdoc 2.6.2 has a bug with RDoc
27+
patch 'Gemfile' do |contents|
28+
contents.sub(/gem "sdoc".*/, "gem \"sdoc\", \"~> 2.6.3\"")
29+
end
2530
elsif version_number >= '5.1.2' && version_number <= '5.1.4'
2631
patch 'guides/source/documents.yaml' do |contents|
2732
# This guide was deleted and prevented Kindle guides from being
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# frozen_string_literal: true
2+
3+
source "https://rubygems.org"
4+
gemspec
5+
6+
gem "minitest"
7+
8+
# We need a newish Rake since Active Job sets its test tasks' descriptions.
9+
gem "rake", ">= 13"
10+
11+
gem "releaser", path: "tools/releaser"
12+
13+
gem "sprockets-rails", ">= 2.0.0", require: false
14+
gem "propshaft", ">= 0.1.7", "!= 1.0.1"
15+
gem "capybara", ">= 3.39"
16+
gem "selenium-webdriver", ">= 4.20.0"
17+
18+
gem "rack-cache", "~> 1.2"
19+
gem "stimulus-rails"
20+
gem "turbo-rails"
21+
gem "jsbundling-rails"
22+
gem "cssbundling-rails"
23+
gem "importmap-rails", ">= 1.2.3"
24+
gem "tailwindcss-rails"
25+
gem "dartsass-rails"
26+
gem "solid_cache"
27+
gem "solid_queue"
28+
gem "solid_cable"
29+
gem "kamal", ">= 2.1.0", require: false
30+
gem "thruster", require: false
31+
# require: false so bcrypt is loaded only when has_secure_password is used.
32+
# This is to avoid Active Model (and by extension the entire framework)
33+
# being dependent on a binary library.
34+
gem "bcrypt", "~> 3.1.11", require: false
35+
36+
# This needs to be with require false to avoid it being automatically loaded by
37+
# sprockets.
38+
gem "terser", ">= 1.1.4", require: false
39+
40+
# Explicitly avoid 1.x that doesn't support Ruby 2.4+
41+
gem "json", ">= 2.0.0", "!=2.7.0"
42+
43+
# Workaround until all supported Ruby versions ship with uri version 0.13.1 or higher.
44+
gem "uri", ">= 0.13.1", require: false
45+
46+
gem "prism"
47+
48+
group :rubocop do
49+
# Rubocop has to be locked in the Gemfile because CI ignores Gemfile.lock
50+
# We don't want rubocop to start failing whenever rubocop makes a new release.
51+
gem "rubocop", "< 1.73", require: false
52+
gem "rubocop-minitest", require: false
53+
gem "rubocop-packaging", require: false
54+
gem "rubocop-performance", require: false
55+
gem "rubocop-rails", require: false
56+
gem "rubocop-md", require: false
57+
58+
# This gem is used in Railties tests so it must be a development dependency.
59+
gem "rubocop-rails-omakase", require: false
60+
end
61+
62+
group :mdl do
63+
gem "mdl", "!= 0.13.0", require: false
64+
end
65+
66+
group :doc do
67+
gem "sdoc"
68+
gem "redcarpet", "~> 3.2.3", platforms: :ruby
69+
gem "w3c_validators", "~> 1.3.6"
70+
gem "rouge"
71+
# Workaround until https://github.com/rouge-ruby/rouge/pull/2131 is merged and released
72+
gem "cgi", require: false
73+
gem "rubyzip", "~> 2.0"
74+
end
75+
76+
# Active Support
77+
gem "dalli", ">= 3.0.1"
78+
gem "listen", "~> 3.3", require: false
79+
gem "libxml-ruby", platforms: :ruby
80+
gem "connection_pool", require: false
81+
gem "rexml", require: false
82+
gem "msgpack", ">= 1.7.0", require: false
83+
84+
# for railties
85+
gem "bootsnap", ">= 1.4.4", require: false
86+
gem "webrick", require: false
87+
gem "jbuilder", require: false
88+
gem "web-console", require: false
89+
90+
# Action Pack and railties
91+
rack_version = ENV.fetch("RACK", "~> 3.0")
92+
if rack_version != "head"
93+
gem "rack", rack_version
94+
else
95+
gem "rack", git: "https://github.com/rack/rack.git", branch: "main"
96+
end
97+
98+
gem "useragent", require: false
99+
100+
# Active Job
101+
group :job do
102+
gem "resque", require: false
103+
gem "resque-scheduler", require: false
104+
gem "sidekiq", require: false
105+
gem "sucker_punch", require: false
106+
gem "delayed_job", require: false
107+
gem "queue_classic", ">= 4.0.0", require: false, platforms: :ruby
108+
gem "sneakers", require: false
109+
gem "backburner", require: false
110+
gem "delayed_job_active_record", require: false
111+
end
112+
113+
# Action Cable
114+
group :cable do
115+
gem "puma", ">= 5.0.3", require: false
116+
117+
gem "redis", ">= 4.0.1", require: false
118+
119+
gem "redis-namespace"
120+
121+
gem "websocket-client-simple", require: false
122+
end
123+
124+
# Active Storage
125+
group :storage do
126+
gem "aws-sdk-s3", require: false
127+
gem "google-cloud-storage", "~> 1.11", require: false
128+
gem "azure-storage-blob", "~> 2.0", require: false
129+
130+
gem "image_processing", "~> 1.2"
131+
end
132+
133+
# Action Mailbox
134+
gem "aws-sdk-sns", require: false
135+
gem "webmock"
136+
137+
# Add your own local bundler stuff.
138+
local_gemfile = File.expand_path(".Gemfile", __dir__)
139+
instance_eval File.read local_gemfile if File.exist? local_gemfile
140+
141+
group :test do
142+
gem "minitest-bisect", require: false
143+
gem "minitest-ci", require: false
144+
gem "minitest-retry"
145+
146+
platforms :mri do
147+
gem "stackprof"
148+
gem "debug", ">= 1.1.0", require: false
149+
end
150+
151+
# Needed for Railties tests because it is included in generated apps.
152+
gem "brakeman"
153+
end
154+
155+
platforms :ruby, :windows do
156+
gem "nokogiri", ">= 1.8.1", "!= 1.11.0"
157+
158+
# Active Record.
159+
gem "sqlite3", ">= 2.1"
160+
161+
group :db do
162+
gem "pg", "~> 1.3"
163+
gem "mysql2", "~> 0.5"
164+
gem "trilogy", ">= 2.7.0"
165+
end
166+
end
167+
168+
gem "tzinfo-data", platforms: [:windows, :jruby]
169+
gem "wdm", ">= 0.1.0", platforms: [:windows]
170+
171+
gem "launchy"
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# frozen_string_literal: true
2+
3+
source "https://rubygems.org"
4+
gemspec
5+
6+
gem "minitest"
7+
8+
# We need a newish Rake since Active Job sets its test tasks' descriptions.
9+
gem "rake", ">= 13"
10+
11+
gem "releaser", path: "tools/releaser"
12+
13+
gem "sprockets-rails", ">= 2.0.0", require: false
14+
gem "propshaft", ">= 0.1.7", "!= 1.0.1"
15+
gem "capybara", ">= 3.39"
16+
gem "selenium-webdriver", ">= 4.20.0"
17+
18+
gem "rack-cache", "~> 1.2"
19+
gem "stimulus-rails"
20+
gem "turbo-rails"
21+
gem "jsbundling-rails"
22+
gem "cssbundling-rails"
23+
gem "importmap-rails", ">= 1.2.3"
24+
gem "tailwindcss-rails"
25+
gem "dartsass-rails"
26+
gem "solid_cache"
27+
gem "solid_queue"
28+
gem "solid_cable"
29+
gem "kamal", ">= 2.1.0", require: false
30+
gem "thruster", require: false
31+
# require: false so bcrypt is loaded only when has_secure_password is used.
32+
# This is to avoid Active Model (and by extension the entire framework)
33+
# being dependent on a binary library.
34+
gem "bcrypt", "~> 3.1.11", require: false
35+
36+
# This needs to be with require false to avoid it being automatically loaded by
37+
# sprockets.
38+
gem "terser", ">= 1.1.4", require: false
39+
40+
# Explicitly avoid 1.x that doesn't support Ruby 2.4+
41+
gem "json", ">= 2.0.0", "!=2.7.0"
42+
43+
# Workaround until all supported Ruby versions ship with uri version 0.13.1 or higher.
44+
gem "uri", ">= 0.13.1", require: false
45+
46+
gem "prism"
47+
48+
group :rubocop do
49+
# Rubocop has to be locked in the Gemfile because CI ignores Gemfile.lock
50+
# We don't want rubocop to start failing whenever rubocop makes a new release.
51+
gem "rubocop", "< 1.73", require: false
52+
gem "rubocop-minitest", require: false
53+
gem "rubocop-packaging", require: false
54+
gem "rubocop-performance", require: false
55+
gem "rubocop-rails", require: false
56+
gem "rubocop-md", require: false
57+
58+
# This gem is used in Railties tests so it must be a development dependency.
59+
gem "rubocop-rails-omakase", require: false
60+
end
61+
62+
group :mdl do
63+
gem "mdl", "!= 0.13.0", require: false
64+
end
65+
66+
group :doc do
67+
gem "sdoc", "~> 2.6.3"
68+
gem "redcarpet", "~> 3.2.3", platforms: :ruby
69+
gem "w3c_validators", "~> 1.3.6"
70+
gem "rouge"
71+
# Workaround until https://github.com/rouge-ruby/rouge/pull/2131 is merged and released
72+
gem "cgi", require: false
73+
gem "rubyzip", "~> 2.0"
74+
end
75+
76+
# Active Support
77+
gem "dalli", ">= 3.0.1"
78+
gem "listen", "~> 3.3", require: false
79+
gem "libxml-ruby", platforms: :ruby
80+
gem "connection_pool", require: false
81+
gem "rexml", require: false
82+
gem "msgpack", ">= 1.7.0", require: false
83+
84+
# for railties
85+
gem "bootsnap", ">= 1.4.4", require: false
86+
gem "webrick", require: false
87+
gem "jbuilder", require: false
88+
gem "web-console", require: false
89+
90+
# Action Pack and railties
91+
rack_version = ENV.fetch("RACK", "~> 3.0")
92+
if rack_version != "head"
93+
gem "rack", rack_version
94+
else
95+
gem "rack", git: "https://github.com/rack/rack.git", branch: "main"
96+
end
97+
98+
gem "useragent", require: false
99+
100+
# Active Job
101+
group :job do
102+
gem "resque", require: false
103+
gem "resque-scheduler", require: false
104+
gem "sidekiq", require: false
105+
gem "sucker_punch", require: false
106+
gem "delayed_job", require: false
107+
gem "queue_classic", ">= 4.0.0", require: false, platforms: :ruby
108+
gem "sneakers", require: false
109+
gem "backburner", require: false
110+
gem "delayed_job_active_record", require: false
111+
end
112+
113+
# Action Cable
114+
group :cable do
115+
gem "puma", ">= 5.0.3", require: false
116+
117+
gem "redis", ">= 4.0.1", require: false
118+
119+
gem "redis-namespace"
120+
121+
gem "websocket-client-simple", require: false
122+
end
123+
124+
# Active Storage
125+
group :storage do
126+
gem "aws-sdk-s3", require: false
127+
gem "google-cloud-storage", "~> 1.11", require: false
128+
gem "azure-storage-blob", "~> 2.0", require: false
129+
130+
gem "image_processing", "~> 1.2"
131+
end
132+
133+
# Action Mailbox
134+
gem "aws-sdk-sns", require: false
135+
gem "webmock"
136+
137+
# Add your own local bundler stuff.
138+
local_gemfile = File.expand_path(".Gemfile", __dir__)
139+
instance_eval File.read local_gemfile if File.exist? local_gemfile
140+
141+
group :test do
142+
gem "minitest-bisect", require: false
143+
gem "minitest-ci", require: false
144+
gem "minitest-retry"
145+
146+
platforms :mri do
147+
gem "stackprof"
148+
gem "debug", ">= 1.1.0", require: false
149+
end
150+
151+
# Needed for Railties tests because it is included in generated apps.
152+
gem "brakeman"
153+
end
154+
155+
platforms :ruby, :windows do
156+
gem "nokogiri", ">= 1.8.1", "!= 1.11.0"
157+
158+
# Active Record.
159+
gem "sqlite3", ">= 2.1"
160+
161+
group :db do
162+
gem "pg", "~> 1.3"
163+
gem "mysql2", "~> 0.5"
164+
gem "trilogy", ">= 2.7.0"
165+
end
166+
end
167+
168+
gem "tzinfo-data", platforms: [:windows, :jruby]
169+
gem "wdm", ">= 0.1.0", platforms: [:windows]
170+
171+
gem "launchy"

test/generators/release_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,10 @@ def test_before_generation_v5_1_2_to_v5_1_4
4242
end
4343
end
4444
end
45+
46+
def test_before_generation_v8_0_3
47+
in_release 'v8.0.3' do
48+
assert_patched 'Gemfile'
49+
end
50+
end
4551
end

0 commit comments

Comments
 (0)