Skip to content

Commit 764489b

Browse files
committed
Refactor change generator database implementation
The database object does not need to know about the other packages in the Dockerfile. This info is only needed for the change generator so lets move it there.
1 parent 0be846c commit 764489b

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)