What’s a good method to purge a dev install before going live - essentially, getting it ready for the final import. (aka killing all users, posts, pm’s, etc.)
Importing Restoring a backup will overwrite all data, if that’s all you need.
If you need a fresh empty database and you’re using the docker setup, you can do this:
./launcher enter app # in the container as root now sv stop unicorn su postgres -c 'psql -c "drop database discourse"' # or keep it: "alter database discourse rename to discourse_backup" su postgres -c 'createdb discourse' su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' su postgres -c 'psql discourse -c "create extension if not exists hstore;"' su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"' RAILS_ENV=production rake db:migrate sv start unicorn
Perfect. I just assumed importing again would cause duplicate entries. Thanks!
Here’s what I do on my development box, though making a backup of a fresh database and restoring from the web interface is a little faster, I think.
#!/usr/bin/env bash if [ ! -f discourse.sublime-project ] then echo "Dude. There's no Discourse here." exit else echo Killing any running rubies. . . killall ruby RAILS_ENV=development export RAILS_ENV sleep 5 # make sure they all quit RAILS_ENV=development bundle exec rake db:drop db:create db:migrate cat <<EOF | bundle exec rake admin:create email@example.com 1secretpassword! 1secretpassword! EOF echo Flushing Redis redis-cli flushall echo Done. fi
Hmm, I said “importing will overwrite all data”, but I meant “restoring a backup will overwrite all data”. The import scripts will NOT overwrite data.
I missed that this was the point of your question. I guess it’s clear now that the cool thing about the import scripts is that they import only new data, so you can do an import, wait hours for it to process, then run it again with the latest version of the database in a few minutes.
I’m developing an importer, so I have to clear the database after making changes to the code before I can re-run it to see what happened.