10
11
12
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
43
44
45
46
47
48
49
50
51
|
# File 'lib/solid_backup/generators/install_generator.rb', line 10
def copy_initializer
backups = []
ActiveRecord::Base.configurations.configs_for(env_name: "production").each do |db_config|
backups << if yes?("Back up #{db_config.name} in production?")
<<~CODE.chomp
config.backup #{db_config.name.inspect},
SolidBackup::Backup::API,
destination: "storage/backups/#{db_config.name}_%Y%m%dT%H%M%S.sqlite3",
interval_in_minutes: 60,
step: 100,
wait: 0.1
CODE
else
"config.backup #{db_config.name.inspect}, SolidBackup::Backup::None"
end
end
initializer "solid_backup.rb", <<~CODE
SolidBackup.configure do |config|
# Enable or disable Solid Backup globally.
config.enabled = Rails.env.production?
# Backup configuration for each database.
#
# IMPORTANT: all databases must be explicitly configured, even if they're not
# backed up, to avoid accidentally excluding new databases from backups.
#{backups.join("\n").indent(2)}
end
CODE
insert_into_file "config/puma.rb", <<~CODE
# Run Solid Backup in the background.
plugin :solid_backup
CODE
empty_directory "storage/backups"
create_file "storage/backups/.keep"
insert_into_file ".gitignore", "!/storage/backups/.keep\n", after: "!/storage/.keep\n"
end
|