Commit b5af2224b0bc5e1a404165c45a1b316e53851daa
Exists in
master
and in
21 other branches
Merge branch 'remove-emails' into 'master'
restore:remove_emails: removes actual emails from database This is useful when you are loading a database dump from a production database for local tests, and you don't want people's emails there in order to avoid accidental outgoing email. See merge request !692
Showing
1 changed file
with
29 additions
and
0 deletions
Show diff stats
lib/tasks/backup.rake
| ... | ... | @@ -111,3 +111,32 @@ task :restore => :check_backup_support do |
| 111 | 111 | puts "Backup restored!" |
| 112 | 112 | puts "****************************************************" |
| 113 | 113 | end |
| 114 | + | |
| 115 | +desc 'Removes emails from database' | |
| 116 | +task 'restore:remove_emails' => :environment do | |
| 117 | + connection = ActiveRecord::Base.connection | |
| 118 | + [ | |
| 119 | + "UPDATE users SET email = concat('user', id, '@localhost.localdomain')", | |
| 120 | + "UPDATE environments SET contact_email = concat('environment', id, '@localhost.localdomain')", | |
| 121 | + ].each do |update| | |
| 122 | + puts update | |
| 123 | + connection.execute(update) | |
| 124 | + end | |
| 125 | + | |
| 126 | + profiles = connection.execute("select id, data from profiles") | |
| 127 | + profiles.each do |profile| | |
| 128 | + if profile['data'] | |
| 129 | + data = YAML.load(profile['data']) | |
| 130 | + if data[:contact_email] && data[:contact_email] !~ /@localhost.localdomain$/ | |
| 131 | + data[:contact_email] = ['profile', profile['id'], '@localhost.localdomain'].join | |
| 132 | + sql = Environment.send(:sanitize_sql, [ | |
| 133 | + "UPDATE profiles SET data = ? WHERE id = ?", | |
| 134 | + YAML.dump(data), | |
| 135 | + profile['id'], | |
| 136 | + ]) | |
| 137 | + puts sql | |
| 138 | + connection.execute(sql) | |
| 139 | + end | |
| 140 | + end | |
| 141 | + end | |
| 142 | +end | ... | ... |