13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/docktor_rails/checks/rails_master_key_required.rb', line 13
def run(ctx)
root = ctx.fetch(:root)
encrypted_files = encrypted_credentials_files(root)
return pass("No encrypted credentials detected") if encrypted_files.empty?
master_key_path = File.join(root, "config", "master.key")
if File.file?(master_key_path) && !File.read(master_key_path).strip.empty?
return pass("master.key present", files: ["config/master.key"])
end
if ENV.key?("RAILS_MASTER_KEY") && !ENV.fetch("RAILS_MASTER_KEY").to_s.empty?
return pass("RAILS_MASTER_KEY is set in ENV")
end
dotenv_path = File.join(root, ".env.docker")
dotenv = Dotenv.parse_file(dotenv_path)
if dotenv.key?("RAILS_MASTER_KEY") && !dotenv.fetch("RAILS_MASTER_KEY").to_s.empty?
return pass("RAILS_MASTER_KEY present in .env.docker", files: [".env.docker"])
end
fail(
"Missing master key for encrypted credentials",
files: encrypted_files,
hint: "Provide config/master.key (local), or set RAILS_MASTER_KEY (CI/prod), or add it to .env.docker."
)
end
|