Skip to content

Commit d60890c

Browse files
authored
Merge pull request rails#51828 from Shopify/refacotor-change-generator
Refactor change generator database implementation
2 parents 4b4171b + 764489b commit d60890c

File tree

2 files changed

+23
-52
lines changed

2 files changed

+23
-52
lines changed

railties/lib/rails/generators/database.rb

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,6 @@ def gem
4646
raise NotImplementedError
4747
end
4848

49-
def docker_base
50-
raise NotImplementedError
51-
end
52-
53-
def docker_build
54-
raise NotImplementedError
55-
end
56-
5749
def base_package
5850
raise NotImplementedError
5951
end
@@ -125,14 +117,6 @@ def gem
125117
["mysql2", ["~> 0.5"]]
126118
end
127119

128-
def docker_base
129-
"curl default-mysql-client libvips"
130-
end
131-
132-
def docker_build
133-
"build-essential default-libmysqlclient-dev git"
134-
end
135-
136120
def base_package
137121
"default-mysql-client"
138122
end
@@ -172,14 +156,6 @@ def gem
172156
["pg", ["~> 1.1"]]
173157
end
174158

175-
def docker_base
176-
"curl libvips postgresql-client"
177-
end
178-
179-
def docker_build
180-
"build-essential git libpq-dev"
181-
end
182-
183159
def base_package
184160
"postgresql-client"
185161
end
@@ -220,14 +196,6 @@ def gem
220196
["trilogy", ["~> 2.7"]]
221197
end
222198

223-
def docker_base
224-
"curl libvips"
225-
end
226-
227-
def docker_build
228-
"build-essential git"
229-
end
230-
231199
def base_package
232200
nil
233201
end
@@ -258,14 +226,6 @@ def gem
258226
["sqlite3", [">= 1.4"]]
259227
end
260228

261-
def docker_base
262-
"curl libsqlite3-0 libvips"
263-
end
264-
265-
def docker_build
266-
"build-essential git"
267-
end
268-
269229
def base_package
270230
"libsqlite3-0"
271231
end
@@ -284,8 +244,6 @@ def name; end
284244
def service; end
285245
def port; end
286246
def volume; end
287-
def docker_base; end
288-
def docker_build; end
289247
def base_package; end
290248
def build_package; end
291249
def feature_name; end

railties/lib/rails/generators/rails/db/system/change/change_generator.rb

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ module System
1111
class ChangeGenerator < Base # :nodoc:
1212
include AppName
1313

14+
BASE_PACKAGES = %w( curl libvips )
15+
BUILD_PACKAGES = %w( build-essential git )
16+
1417
class_option :to, required: true,
1518
desc: "The database system to switch to."
1619

@@ -45,14 +48,8 @@ def edit_dockerfile
4548
dockerfile_path = File.expand_path("Dockerfile", destination_root)
4649
return unless File.exist?(dockerfile_path)
4750

48-
base_name = database.docker_base
49-
build_name = database.docker_build
50-
if base_name
51-
gsub_file("Dockerfile", all_docker_bases_regex, base_name)
52-
end
53-
if build_name
54-
gsub_file("Dockerfile", all_docker_builds_regex, build_name)
55-
end
51+
gsub_file("Dockerfile", all_docker_bases_regex, docker_base_packages(database.base_package))
52+
gsub_file("Dockerfile", all_docker_builds_regex, docker_build_packages(database.build_package))
5653
end
5754

5855
def edit_devcontainer_files
@@ -69,11 +66,27 @@ def all_database_gems
6966
end
7067

7168
def all_docker_bases
72-
Database.all.filter_map { |database| database.docker_base }
69+
Database.all.map { |database| docker_base_packages(database.base_package) }.uniq
70+
end
71+
72+
def docker_base_packages(database_package)
73+
if database_package
74+
[database_package].concat(BASE_PACKAGES).sort
75+
else
76+
BASE_PACKAGES
77+
end.join("\s")
7378
end
7479

7580
def all_docker_builds
76-
Database.all.filter_map { |database| database.docker_build }
81+
Database.all.map { |database| docker_build_packages(database.build_package) }.uniq
82+
end
83+
84+
def docker_build_packages(database_package)
85+
if database_package
86+
[database_package].concat(BUILD_PACKAGES).sort
87+
else
88+
BUILD_PACKAGES
89+
end.join("\s")
7790
end
7891

7992
def all_database_gems_regex

0 commit comments

Comments
 (0)