Skip to content

Instantly share code, notes, and snippets.

/-

Created February 1, 2016 16:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/989cd7044d7c73fee0cd to your computer and use it in GitHub Desktop.
Save anonymous/989cd7044d7c73fee0cd to your computer and use it in GitHub Desktop.
ubuntu@sonicyouth:/var/discourse$ ./launcher rebuild app
WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed
Please be patient
Unable to find image 'discourse/discourse:1.0.16' locally
1.0.16: Pulling from discourse/discourse
Digest: sha256:284ee060e6c060c7772b3219f7130843b1f56760a81edb2912736e3e608d8d2a
Status: Downloaded newer image for discourse/discourse:1.0.16
Ensuring discourse docker is up to date
Fetching origin
Discourse Docker is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 10 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Already up-to-date.
I, [2016-01-31T22:33:57.479801 #38] INFO -- : Loading --stdin
I, [2016-01-31T22:33:57.484595 #38] INFO -- : > mkdir -p /shared/postgres_run
I, [2016-01-31T22:33:57.488104 #38] INFO -- :
I, [2016-01-31T22:33:57.488710 #38] INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2016-01-31T22:33:57.492299 #38] INFO -- :
I, [2016-01-31T22:33:57.492868 #38] INFO -- : > chmod 775 /shared/postgres_run
I, [2016-01-31T22:33:57.494655 #38] INFO -- :
I, [2016-01-31T22:33:57.495237 #38] INFO -- : > rm -fr /var/run/postgresql
I, [2016-01-31T22:33:57.498355 #38] INFO -- :
I, [2016-01-31T22:33:57.498905 #38] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2016-01-31T22:33:57.501650 #38] INFO -- :
I, [2016-01-31T22:33:57.502248 #38] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2016/01/31 22:33:57 socat[46] E connect(4, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2016-01-31T22:33:57.513823 #38] INFO -- :
I, [2016-01-31T22:33:57.514374 #38] INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2016-01-31T22:33:57.515990 #38] INFO -- :
I, [2016-01-31T22:33:57.516523 #38] INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2016-01-31T22:33:57.518139 #38] INFO -- :
I, [2016-01-31T22:33:57.518737 #38] INFO -- : > mkdir -p /shared/postgres_run/9.3-main.pg_stat_tmp
I, [2016-01-31T22:33:57.520006 #38] INFO -- :
I, [2016-01-31T22:33:57.520587 #38] INFO -- : > chown postgres:postgres /shared/postgres_run/9.3-main.pg_stat_tmp
I, [2016-01-31T22:33:57.522100 #38] INFO -- :
I, [2016-01-31T22:33:57.525058 #38] INFO -- : File > /etc/service/postgres/run chmod: +x
I, [2016-01-31T22:33:57.528029 #38] INFO -- : File > /etc/runit/3.d/99-postgres chmod: +x
I, [2016-01-31T22:33:57.530936 #38] INFO -- : File > /root/upgrade_postgres chmod: +x
I, [2016-01-31T22:33:57.532052 #38] INFO -- : > chown -R root /var/lib/postgresql/9.3/main
I, [2016-01-31T22:33:58.295485 #38] INFO -- :
I, [2016-01-31T22:33:58.295711 #38] INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/9.3/bin/initdb -D /shared/postgres_data || exit 0
WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
I, [2016-01-31T22:34:00.192772 #38] INFO -- : The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
fixing permissions on existing directory /shared/postgres_data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
creating configuration files ... ok
creating template1 database in /shared/postgres_data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating collations ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
loading PL/pgSQL server-side language ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok
syncing data to disk ... ok
Success. You can now start the database server using:
/usr/lib/postgresql/9.3/bin/postgres -D /shared/postgres_data
or
/usr/lib/postgresql/9.3/bin/pg_ctl -D /shared/postgres_data -l logfile start
I, [2016-01-31T22:34:00.193180 #38] INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2016-01-31T22:34:00.197145 #38] INFO -- :
I, [2016-01-31T22:34:00.197415 #38] INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2016-01-31T22:34:00.198960 #38] INFO -- :
I, [2016-01-31T22:34:00.199539 #38] INFO -- : > /root/upgrade_postgres
I, [2016-01-31T22:34:00.202576 #38] INFO -- :
I, [2016-01-31T22:34:00.203060 #38] INFO -- : > rm /root/upgrade_postgres
I, [2016-01-31T22:34:00.204258 #38] INFO -- :
I, [2016-01-31T22:34:00.213703 #38] INFO -- : Replacing data_directory = '/var/lib/postgresql/9.3/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.214485 #38] INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.215114 #38] INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.215718 #38] INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.216349 #38] INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.216924 #38] INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.217690 #38] INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2016-01-31T22:34:00.219559 #38] INFO -- :
I, [2016-01-31T22:34:00.219993 #38] INFO -- : Replacing (?-mix:#?max_wal_senders *=.*) with max_wal_senders = $db_max_wal_senders in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.220570 #38] INFO -- : Replacing (?-mix:#?wal_level *=.*) with wal_level = $db_wal_level in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.221177 #38] INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.221815 #38] INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.222442 #38] INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/9.3/main/postgresql.conf
I, [2016-01-31T22:34:00.223575 #38] INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres peer in /etc/postgresql/9.3/main/pg_hba.conf
I, [2016-01-31T22:34:00.224179 #38] INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/9.3/main/pg_hba.conf
I, [2016-01-31T22:34:00.224925 #38] INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/9.3/bin/postmaster -D /etc/postgresql/9.3/main
I, [2016-01-31T22:34:00.240367 #38] INFO -- : > sleep 5
2016-01-31 22:34:00 UTC [111-1] LOG: database system was shut down at 2016-01-31 22:34:00 UTC
2016-01-31 22:34:00 UTC [111-2] LOG: MultiXact member wraparound protections are now enabled
2016-01-31 22:34:00 UTC [108-1] LOG: database system is ready to accept connections
2016-01-31 22:34:00 UTC [115-1] LOG: autovacuum launcher started
I, [2016-01-31T22:34:05.243100 #38] INFO -- :
I, [2016-01-31T22:34:05.243908 #38] INFO -- : > su postgres -c 'createdb discourse' || true
2016-01-31 22:34:05 UTC [120-1] postgres@postgres LOG: duration: 226.592 ms statement: CREATE DATABASE discourse;
I, [2016-01-31T22:34:05.526318 #38] INFO -- :
I, [2016-01-31T22:34:05.527036 #38] INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
I, [2016-01-31T22:34:05.586361 #38] INFO -- : CREATE ROLE
I, [2016-01-31T22:34:05.587160 #38] INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
I, [2016-01-31T22:34:05.628885 #38] INFO -- : GRANT
I, [2016-01-31T22:34:05.629720 #38] INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
I, [2016-01-31T22:34:05.671366 #38] INFO -- : ALTER SCHEMA
I, [2016-01-31T22:34:05.672205 #38] INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists hstore;"'
I, [2016-01-31T22:34:05.731165 #38] INFO -- : CREATE EXTENSION
I, [2016-01-31T22:34:05.731968 #38] INFO -- : > su postgres -c 'psql template1 -c "create extension if not exists pg_trgm;"'
I, [2016-01-31T22:34:05.780412 #38] INFO -- : CREATE EXTENSION
I, [2016-01-31T22:34:05.781175 #38] INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists hstore;"'
I, [2016-01-31T22:34:05.834508 #38] INFO -- : CREATE EXTENSION
I, [2016-01-31T22:34:05.835279 #38] INFO -- : > su postgres -c 'psql discourse -c "create extension if not exists pg_trgm;"'
I, [2016-01-31T22:34:05.882398 #38] INFO -- : CREATE EXTENSION
I, [2016-01-31T22:34:05.883527 #38] INFO -- : > sudo -u postgres psql discourse
I, [2016-01-31T22:34:05.885591 #38] INFO -- : update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'discourse' AND encoding = pg_char_to_encoding('SQL_ASCII');
I, [2016-01-31T22:34:05.929933 #38] INFO -- : File > /var/lib/postgresql/take-database-backup chmod: +x
I, [2016-01-31T22:34:05.934321 #38] INFO -- : File > /var/spool/cron/crontabs/postgres chmod:
I, [2016-01-31T22:34:05.934895 #38] INFO -- : > echo postgres installed!
I, [2016-01-31T22:34:05.936095 #38] INFO -- : postgres installed!
I, [2016-01-31T22:34:05.939134 #38] INFO -- : File > /etc/service/redis/run chmod: +x
I, [2016-01-31T22:34:05.941996 #38] INFO -- : File > /etc/runit/3.d/10-redis chmod: +x
I, [2016-01-31T22:34:05.943580 #38] INFO -- : Replacing daemonize yes with in /etc/redis/redis.conf
I, [2016-01-31T22:34:05.944295 #38] INFO -- : Replacing (?-mix:^pidfile.*$) with in /etc/redis/redis.conf
I, [2016-01-31T22:34:05.945159 #38] INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2016-01-31T22:34:05.946843 #38] INFO -- :
I, [2016-01-31T22:34:05.947279 #38] INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2016-01-31T22:34:05.948019 #38] INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2016-01-31T22:34:05.948832 #38] INFO -- : > echo redis installed
I, [2016-01-31T22:34:05.950010 #38] INFO -- : redis installed
I, [2016-01-31T22:34:05.950609 #38] INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com"; puts "Aborting! Mail is not configured!"; exit 1; end'
I, [2016-01-31T22:34:05.998578 #38] INFO -- :
I, [2016-01-31T22:34:05.999310 #38] INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'
I, [2016-01-31T22:34:06.047395 #38] INFO -- :
I, [2016-01-31T22:34:06.051831 #38] INFO -- : File > /etc/runit/1.d/copy-env chmod: +x
I, [2016-01-31T22:34:06.054735 #38] INFO -- : File > /etc/runit/1.d/ensure-web-nginx-read chmod: +x
I, [2016-01-31T22:34:06.057667 #38] INFO -- : File > /etc/service/unicorn/run chmod: +x
I, [2016-01-31T22:34:06.060631 #38] INFO -- : File > /etc/service/nginx/run chmod: +x
I, [2016-01-31T22:34:06.063575 #38] INFO -- : File > /etc/runit/3.d/01-nginx chmod: +x
I, [2016-01-31T22:34:06.066598 #38] INFO -- : File > /etc/runit/3.d/02-unicorn chmod: +x
I, [2016-01-31T22:34:06.066874 #38] INFO -- : Replacing # postgres with sv start postgres || exit 1 in /etc/service/unicorn/run
I, [2016-01-31T22:34:06.067618 #38] INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2016-01-31T22:34:06.072110 #38] INFO -- : > cd /var/www/discourse && git reset --hard
236:M 31 Jan 22:34:06.084 * Redis 3.0.6 (00000000/0) 64 bit, standalone mode, port 6379, pid 236 ready to start.
236:M 31 Jan 22:34:06.084 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
236:M 31 Jan 22:34:06.084 # Server started, Redis version 3.0.6
236:M 31 Jan 22:34:06.084 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
236:M 31 Jan 22:34:06.084 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
236:M 31 Jan 22:34:06.084 * The server is now ready to accept connections on port 6379
I, [2016-01-31T22:34:07.129355 #38] INFO -- : HEAD is now at 2a24403 Merge pull request #3976 from tgxworld/upgrade_rails
I, [2016-01-31T22:34:07.129715 #38] INFO -- : > cd /var/www/discourse && git clean -f
I, [2016-01-31T22:34:07.206582 #38] INFO -- :
I, [2016-01-31T22:34:07.206939 #38] INFO -- : > cd /var/www/discourse && git remote set-branches --add origin master
I, [2016-01-31T22:34:07.243561 #38] INFO -- :
I, [2016-01-31T22:34:07.243867 #38] INFO -- : > cd /var/www/discourse && git pull
From https://github.com/discourse/discourse
2a24403..f281f6e master -> origin/master
f42d1c8..7e25c9f beta -> origin/beta
304fc70..9e22fa9 stable -> origin/stable
2a24403..f281f6e tests-passed -> origin/tests-passed
+ 7be1889...496ae43 vdom -> origin/vdom (forced update)
I, [2016-01-31T22:34:08.470513 #38] INFO -- : Updating 2a24403..f281f6e
Fast-forward
Gemfile | 5 +-
Gemfile.lock | 24 +-
.../google_branding/logo_calendar_128px.png | Bin 0 -> 4345 bytes
.../favicons/google_branding/logo_docs_128px.png | Bin 0 -> 2503 bytes
.../favicons/google_branding/logo_drive_128px.png | Bin 0 -> 5694 bytes
.../favicons/google_branding/logo_forms_128px.png | Bin 0 -> 2898 bytes
.../favicons/google_branding/logo_sheets_128px.png | Bin 0 -> 2675 bytes
.../favicons/google_branding/logo_slides_128px.png | Bin 0 -> 2541 bytes
.../discourse/components/d-editor.js.es6 | 24 +-
.../discourse/components/notification-item.js.es6 | 16 +-
.../discourse/dialects/category_hashtag_dialect.js | 4 +-
.../discourse/lib/category-hashtags.js.es6 | 22 +
.../javascripts/discourse/templates/header.hbs | 1 +
.../discourse/templates/user/messages.hbs | 2 +-
app/assets/stylesheets/common/base/onebox.scss | 23 +
.../stylesheets/common/components/hashtag.scss | 4 +-
app/assets/stylesheets/desktop/topic-post.scss | 10 +-
app/controllers/admin/users_controller.rb | 4 +
app/jobs/regular/user_email.rb | 131 ++--
app/jobs/scheduled/enqueue_digest_emails.rb | 4 +-
app/mailers/user_notifications.rb | 31 +-
app/models/category_user.rb | 6 +-
app/models/group_user.rb | 2 +-
app/models/notification.rb | 8 +-
app/models/post.rb | 4 +
app/models/user.rb | 9 +-
app/models/user_email_observer.rb | 51 +-
app/models/user_history.rb | 12 +-
app/models/user_summary.rb | 6 +-
app/serializers/basic_category_serializer.rb | 2 +-
app/services/post_alerter.rb | 59 +-
app/services/staff_action_logger.rb | 32 +
config/locales/client.bs_BA.yml | 7 +-
config/locales/client.cs.yml | 9 +-
config/locales/client.da.yml | 9 +-
config/locales/client.en.yml | 12 +-
config/locales/client.fi.yml | 55 +-
config/locales/client.fr.yml | 11 +-
config/locales/client.he.yml | 9 +-
config/locales/client.ko.yml | 119 +++-
config/locales/client.nb_NO.yml | 74 ++-
config/locales/client.nl.yml | 32 +-
config/locales/client.pl_PL.yml | 9 +-
config/locales/client.pt.yml | 15 +-
config/locales/client.pt_BR.yml | 8 +-
config/locales/client.sk.yml | 114 +++-
config/locales/client.sq.yml | 25 +-
config/locales/client.sv.yml | 8 +-
config/locales/client.te.yml | 7 +-
config/locales/client.uk.yml | 4 +-
config/locales/client.zh_TW.yml | 8 +-
config/locales/server.bs_BA.yml | 30 -
config/locales/server.de.yml | 122 +---
config/locales/server.en.yml | 22 +-
config/locales/server.fa_IR.yml | 14 -
config/locales/server.fi.yml | 134 +---
config/locales/server.fr.yml | 120 ----
config/locales/server.he.yml | 40 --
config/locales/server.ja.yml | 111 ----
config/locales/server.ko.yml | 57 +-
config/locales/server.nb_NO.yml | 24 +-
config/locales/server.nl.yml | 88 ---
config/locales/server.pl_PL.yml | 3 -
config/locales/server.pt.yml | 39 +-
config/locales/server.pt_BR.yml | 29 -
config/locales/server.ro.yml | 20 -
config/locales/server.sk.yml | 730 ++++++++++++++++++++-
config/locales/server.sv.yml | 1 -
config/locales/server.te.yml | 1 -
config/locales/server.zh_TW.yml | 2 -
config/nginx.sample.conf | 8 +-
config/site_settings.yml | 1 -
..._change_default_notification_level_on_groups.rb | 6 +
...02_migrate_uncategorized_description_setting.rb | 11 +
lib/distributed_cache.rb | 7 +-
lib/email/receiver.rb | 33 +-
lib/email/sender.rb | 44 +-
lib/guardian/topic_guardian.rb | 5 +-
lib/import_export/category_exporter.rb | 89 +++
lib/import_export/category_importer.rb | 75 +++
lib/import_export/import_export.rb | 26 +
lib/import_export/topic_exporter.rb | 96 +++
lib/import_export/topic_importer.rb | 67 ++
lib/pretty_text.rb | 3 +-
lib/topic_creator.rb | 3 +-
lib/user_name_suggester.rb | 3 +-
plugins/lazyYT/plugin.rb | 3 +-
plugins/poll/config/locales/client.fi.yml | 2 +-
plugins/poll/config/locales/server.ru.yml | 2 +
public/images/welcome/notification-panel-2x.png | Bin 4295 -> 3799 bytes
.../images/welcome/topic-list-select-areas-2x.png | Bin 8524 -> 11719 bytes
public/images/welcome/username-completion-2x.png | Bin 9860 -> 22709 bytes
script/discourse | 45 ++
spec/components/distributed_cache_spec.rb | 3 +-
spec/components/email/receiver_spec.rb | 21 +-
spec/components/guardian_spec.rb | 13 +-
spec/components/post_creator_spec.rb | 1 +
spec/components/user_name_suggester_spec.rb | 10 +-
spec/controllers/admin/groups_controller_spec.rb | 2 +-
spec/fixtures/emails/attached_txt_file.eml | 30 +
.../{inline_attachment.eml => inline_image.eml} | 0
...with_attachments.eml => no_body_with_image.eml} | 0
spec/fixtures/emails/signature.eml | 12 -
spec/integrity/i18n_spec.rb | 2 +-
spec/jobs/user_email_spec.rb | 91 ++-
spec/mailers/user_notifications_spec.rb | 57 +-
spec/models/category_user_spec.rb | 36 +-
spec/models/post_action_spec.rb | 7 +-
spec/models/user_email_observer_spec.rb | 23 +-
spec/models/user_summary_spec.rb | 36 +
test/javascripts/lib/markdown-test.js.es6 | 2 +-
111 files changed, 2283 insertions(+), 1210 deletions(-)
create mode 100644 app/assets/images/favicons/google_branding/logo_calendar_128px.png
create mode 100644 app/assets/images/favicons/google_branding/logo_docs_128px.png
create mode 100644 app/assets/images/favicons/google_branding/logo_drive_128px.png
create mode 100644 app/assets/images/favicons/google_branding/logo_forms_128px.png
create mode 100644 app/assets/images/favicons/google_branding/logo_sheets_128px.png
create mode 100644 app/assets/images/favicons/google_branding/logo_slides_128px.png
create mode 100644 db/migrate/20160127105314_change_default_notification_level_on_groups.rb
create mode 100644 db/migrate/20160127222802_migrate_uncategorized_description_setting.rb
create mode 100644 lib/import_export/category_exporter.rb
create mode 100644 lib/import_export/category_importer.rb
create mode 100644 lib/import_export/import_export.rb
create mode 100644 lib/import_export/topic_exporter.rb
create mode 100644 lib/import_export/topic_importer.rb
create mode 100644 spec/fixtures/emails/attached_txt_file.eml
rename spec/fixtures/emails/{inline_attachment.eml => inline_image.eml} (100%)
rename spec/fixtures/emails/{no_body_with_attachments.eml => no_body_with_image.eml} (100%)
delete mode 100644 spec/fixtures/emails/signature.eml
create mode 100644 spec/models/user_summary_spec.rb
I, [2016-01-31T22:34:08.471615 #38] INFO -- : > cd /var/www/discourse && git fetch origin tests-passed
From https://github.com/discourse/discourse
* branch tests-passed -> FETCH_HEAD
I, [2016-01-31T22:34:08.652638 #38] INFO -- :
I, [2016-01-31T22:34:08.652856 #38] INFO -- : > cd /var/www/discourse && git checkout tests-passed
Switched to a new branch 'tests-passed'
I, [2016-01-31T22:34:08.743624 #38] INFO -- : Branch tests-passed set up to track remote branch tests-passed from origin.
I, [2016-01-31T22:34:08.743835 #38] INFO -- : > cd /var/www/discourse && mkdir -p tmp/pids
I, [2016-01-31T22:34:08.746262 #38] INFO -- :
I, [2016-01-31T22:34:08.746443 #38] INFO -- : > cd /var/www/discourse && mkdir -p tmp/sockets
I, [2016-01-31T22:34:08.748259 #38] INFO -- :
I, [2016-01-31T22:34:08.748432 #38] INFO -- : > cd /var/www/discourse && touch tmp/.gitkeep
I, [2016-01-31T22:34:08.752033 #38] INFO -- :
I, [2016-01-31T22:34:08.752218 #38] INFO -- : > cd /var/www/discourse && mkdir -p /shared/log/rails
I, [2016-01-31T22:34:08.754153 #38] INFO -- :
I, [2016-01-31T22:34:08.754371 #38] INFO -- : > cd /var/www/discourse && bash -c "touch -a /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr}.log"
I, [2016-01-31T22:34:08.757273 #38] INFO -- :
I, [2016-01-31T22:34:08.757478 #38] INFO -- : > cd /var/www/discourse && bash -c "ln -s /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr}.log /var/www/discourse/log"
I, [2016-01-31T22:34:08.760521 #38] INFO -- :
I, [2016-01-31T22:34:08.760689 #38] INFO -- : > cd /var/www/discourse && bash -c "mkdir -p /shared/{uploads,backups}"
I, [2016-01-31T22:34:08.763611 #38] INFO -- :
I, [2016-01-31T22:34:08.763831 #38] INFO -- : > cd /var/www/discourse && bash -c "ln -s /shared/{uploads,backups} /var/www/discourse/public"
I, [2016-01-31T22:34:08.766539 #38] INFO -- :
I, [2016-01-31T22:34:08.766713 #38] INFO -- : > cd /var/www/discourse && chown -R discourse:www-data /shared/log/rails /shared/uploads /shared/backups
I, [2016-01-31T22:34:08.768690 #38] INFO -- :
I, [2016-01-31T22:34:08.768973 #38] INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2016-01-31T22:34:08.770334 #38] INFO -- : > cd /var/www/discourse/plugins && mkdir -p plugins
I, [2016-01-31T22:34:08.772121 #38] INFO -- :
I, [2016-01-31T22:34:08.772291 #38] INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2016-01-31T22:34:09.278109 #38] INFO -- :
I, [2016-01-31T22:34:09.279244 #38] INFO -- : > cp /var/www/discourse/config/nginx.sample.conf /etc/nginx/conf.d/discourse.conf
I, [2016-01-31T22:34:09.283655 #38] INFO -- :
I, [2016-01-31T22:34:09.283938 #38] INFO -- : > rm /etc/nginx/sites-enabled/default
I, [2016-01-31T22:34:09.285630 #38] INFO -- :
I, [2016-01-31T22:34:09.285840 #38] INFO -- : > mkdir -p /var/nginx/cache
I, [2016-01-31T22:34:09.287261 #38] INFO -- :
I, [2016-01-31T22:34:09.288150 #38] INFO -- : Replacing pid /run/nginx.pid; with daemon off; in /etc/nginx/nginx.conf
I, [2016-01-31T22:34:09.288748 #38] INFO -- : Replacing (?m-ix:upstream[^\}]+\}) with upstream discourse { server 127.0.0.1:3000; } in /etc/nginx/conf.d/discourse.conf
I, [2016-01-31T22:34:09.289361 #38] INFO -- : Replacing (?-mix:server_name.+$) with server_name _ ; in /etc/nginx/conf.d/discourse.conf
I, [2016-01-31T22:34:09.289931 #38] INFO -- : Replacing (?-mix:client_max_body_size.+$) with client_max_body_size $upload_size ; in /etc/nginx/conf.d/discourse.conf
I, [2016-01-31T22:34:09.290712 #38] INFO -- : > echo "done configuring web"
I, [2016-01-31T22:34:09.291906 #38] INFO -- : done configuring web
I, [2016-01-31T22:34:09.292847 #38] INFO -- : > cd /var/www/discourse && gem update bundler
I, [2016-01-31T22:34:11.683515 #38] INFO -- : Updating installed gems
Nothing to update
I, [2016-01-31T22:34:11.683927 #38] INFO -- : > cd /var/www/discourse && chown -R discourse /var/www/discourse
I, [2016-01-31T22:34:24.713936 #38] INFO -- :
I, [2016-01-31T22:34:24.715267 #38] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle install --deployment --verbose --without test --without development'
I, [2016-01-31T22:34:31.153501 #38] INFO -- : HTTP GET https://bundler.rubygems.org/api/v1/dependencies
HTTP 200 OK
Fetching gem metadata from https://rubygems.org/
Query List: ["rake", "i18n", "json", "minitest", "thread_safe", "tzinfo", "activesupport", "builder", "erubis", "mini_portile2", "nokogiri", "rails-deprecated_sanitizer", "rails-dom-testing", "loofah", "rails-html-sanitizer", "actionview", "rack", "rack-test", "actionpack", "globalid", "activejob", "mime-types", "mail", "actionmailer", "activemodel", "active_model_serializers", "arel", "activerecord", "jmespath", "aws-sdk-core", "aws-sdk-resources", "aws-sdk", "babel-source", "execjs", "babel-transpiler", "ember-source", "barber", "byebug", "certified", "coderay", "concurrent-ruby", "connection_pool", "crass", "daemons", "diff-lcs", "thor", "railties", "discourse-qunit-rails", "docile", "unf_ext", "unf", "domain_name", "email_reply_trimmer", "ember-data-source", "hike", "multi_json", "tilt", "sprockets", "ember-handlebars-template", "jquery-rails", "ember-rails", "eventmachine", "excon", "exifr", "fabrication", "fakeweb", "multipart-post", "faraday", "fast_blank", "rake-compiler", "fast_stack", "fast_xor", "fast_xs", "fastimage_discourse", "ffi", "flamegraph", "fspath", "sorcerer", "given_core", "guess_html_encoding", "hashie", "highline", "hiredis", "htmlentities", "http-cookie", "image_size", "in_threads", "progress", "image_optim", "jwt", "kgio", "libv8", "listen", "logster", "lru_redux", "redis", "message_bus", "metaclass", "method_source", "mocha", "mock_redis", "moneta", "msgpack", "multi_xml", "mustache", "netrc", "nokogumbo", "oauth", "oauth2", "oj", "omniauth", "omniauth-oauth2", "omniauth-facebook", "omniauth-github-discourse", "omniauth-google-oauth2", "omniauth-oauth", "ruby-openid", "rack-openid", "omniauth-openid", "omniauth-twitter", "onebox", "openid-redis-store", "pg", "slop", "pry", "pry-nav", "pry-rails", "puma", "r2", "rack-mini-profiler", "rack-protection", "sprockets-rails", "rails", "rails-observers", "rails_multisite", "raindrops", "rb-fsevent", "rb-inotify", "trollop", "rbtrace", "redis-namespace", "ref", "rest-client", "rinku", "rmmseg-cpp", "rspec-support", "rspec-core", "rspec-expectations", "rspec-mocks", "rspec", "rspec-given", "rspec-html-matchers", "rspec-rails", "rtlit", "ruby-readability", "sanitize", "sass", "sass-rails", "seed-fu", "shoulda-context", "shoulda-matchers", "shoulda", "sidekiq", "sidekiq-statistic", "simple-rss", "simplecov-html", "simplecov", "sinatra", "spork", "spork-rails", "therubyracer", "thin", "timecop", "uglifier", "unicorn"]
Query Gemcutter Dependency Endpoint API: rake,i18n,json,minitest,thread_safe,tzinfo,activesupport,builder,erubis,mini_portile2,nokogiri,rails-deprecated_sanitizer,rails-dom-testing,loofah,rails-html-sanitizer,actionview,rack,rack-test,actionpack,globalid,activejob,mime-types,mail,actionmailer,activemodel,active_model_serializers,arel,activerecord,jmespath,aws-sdk-core,aws-sdk-resources,aws-sdk,babel-source,execjs,babel-transpiler,ember-source,barber,byebug,certified,coderay,concurrent-ruby,connection_pool,crass,daemons,diff-lcs,thor,railties,discourse-qunit-rails,docile,unf_ext,unf,domain_name,email_reply_trimmer,ember-data-source,hike,multi_json,tilt,sprockets,ember-handlebars-template,jquery-rails,ember-rails,eventmachine,excon,exifr,fabrication,fakeweb,multipart-post,faraday,fast_blank,rake-compiler,fast_stack,fast_xor,fast_xs,fastimage_discourse,ffi,flamegraph,fspath,sorcerer,given_core,guess_html_encoding,hashie,highline,hiredis,htmlentities,http-cookie,image_size,in_threads,progress,image_optim,jwt,kgio,libv8,listen,logster,lru_redux,redis,message_bus,metaclass,method_source,mocha,mock_redis,moneta,msgpack,multi_xml,mustache,netrc,nokogumbo,oauth,oauth2,oj,omniauth,omniauth-oauth2,omniauth-facebook,omniauth-github-discourse,omniauth-google-oauth2,omniauth-oauth,ruby-openid,rack-openid,omniauth-openid,omniauth-twitter,onebox,openid-redis-store,pg,slop,pry,pry-nav,pry-rails,puma,r2,rack-mini-profiler,rack-protection,sprockets-rails,rails,rails-observers,rails_multisite,raindrops,rb-fsevent,rb-inotify,trollop,rbtrace,redis-namespace,ref,rest-client,rinku,rmmseg-cpp,rspec-support,rspec-core,rspec-expectations,rspec-mocks,rspec,rspec-given,rspec-html-matchers,rspec-rails,rtlit,ruby-readability,sanitize,sass,sass-rails,seed-fu,shoulda-context,shoulda-matchers,shoulda,sidekiq,sidekiq-statistic,simple-rss,simplecov-html,simplecov,sinatra,spork,spork-rails,therubyracer,thin,timecop,uglifier,unicorn
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=rake%2Ci18n%2Cjson%2Cminitest%2Cthread_safe%2Ctzinfo%2Cactivesupport%2Cbuilder%2Cerubis%2Cmini_portile2%2Cnokogiri%2Crails-deprecated_sanitizer%2Crails-dom-testing%2Cloofah%2Crails-html-sanitizer%2Cactionview%2Crack%2Crack-test%2Cactionpack%2Cglobalid%2Cactivejob%2Cmime-types%2Cmail%2Cactionmailer%2Cactivemodel%2Cactive_model_serializers%2Carel%2Cactiverecord%2Cjmespath%2Caws-sdk-core%2Caws-sdk-resources%2Caws-sdk%2Cbabel-source%2Cexecjs%2Cbabel-transpiler%2Cember-source%2Cbarber%2Cbyebug%2Ccertified%2Ccoderay%2Cconcurrent-ruby%2Cconnection_pool%2Ccrass%2Cdaemons%2Cdiff-lcs%2Cthor%2Crailties%2Cdiscourse-qunit-rails%2Cdocile%2Cunf_ext
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=unf%2Cdomain_name%2Cemail_reply_trimmer%2Cember-data-source%2Chike%2Cmulti_json%2Ctilt%2Csprockets%2Cember-handlebars-template%2Cjquery-rails%2Cember-rails%2Ceventmachine%2Cexcon%2Cexifr%2Cfabrication%2Cfakeweb%2Cmultipart-post%2Cfaraday%2Cfast_blank%2Crake-compiler%2Cfast_stack%2Cfast_xor%2Cfast_xs%2Cfastimage_discourse%2Cffi%2Cflamegraph%2Cfspath%2Csorcerer%2Cgiven_core%2Cguess_html_encoding%2Chashie%2Chighline%2Chiredis%2Chtmlentities%2Chttp-cookie%2Cimage_size%2Cin_threads%2Cprogress%2Cimage_optim%2Cjwt%2Ckgio%2Clibv8%2Clisten%2Clogster%2Clru_redux%2Credis%2Cmessage_bus%2Cmetaclass%2Cmethod_source%2Cmocha
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=mock_redis%2Cmoneta%2Cmsgpack%2Cmulti_xml%2Cmustache%2Cnetrc%2Cnokogumbo%2Coauth%2Coauth2%2Coj%2Comniauth%2Comniauth-oauth2%2Comniauth-facebook%2Comniauth-github-discourse%2Comniauth-google-oauth2%2Comniauth-oauth%2Cruby-openid%2Crack-openid%2Comniauth-openid%2Comniauth-twitter%2Conebox%2Copenid-redis-store%2Cpg%2Cslop%2Cpry%2Cpry-nav%2Cpry-rails%2Cpuma%2Cr2%2Crack-mini-profiler%2Crack-protection%2Csprockets-rails%2Crails%2Crails-observers%2Crails_multisite%2Craindrops%2Crb-fsevent%2Crb-inotify%2Ctrollop%2Crbtrace%2Credis-namespace%2Cref%2Crest-client%2Crinku%2Crmmseg-cpp%2Crspec-support%2Crspec-core%2Crspec-expectations%2Crspec-mocks%2Crspec
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=rspec-given%2Crspec-html-matchers%2Crspec-rails%2Crtlit%2Cruby-readability%2Csanitize%2Csass%2Csass-rails%2Cseed-fu%2Cshoulda-context%2Cshoulda-matchers%2Cshoulda%2Csidekiq%2Csidekiq-statistic%2Csimple-rss%2Csimplecov-html%2Csimplecov%2Csinatra%2Cspork%2Cspork-rails%2Ctherubyracer%2Cthin%2Ctimecop%2Cuglifier%2Cunicorn
HTTP 200 OK
Query List: ["hoe", "atomic", "abstract", "memcache-client", "archive-tar-minitar", "rcov", "mime-types-data", "treetop", "tlsmail", "racc", "rexical", "tenderlove-frex", "weakling", "mini_portile", "camping", "fcgi", "mongrel", "test-spec", "activerecord-deprecated_finders", "jamespath", "rack-mount", "rack-cache", "journey", "activemodel-globalid", "httparty", "uuidtools", "aws-sdk-v1", "handlebars-source", "ember-template-compiler-source", "columnize", "debugger-linecache", "rb-readline", "text-format", "bcrypt-ruby", "functional-ruby", "rack-ssl", "rdoc", "active-model-adapter-source", "addressable", "sqlite3", "newgem", "bones", "rb-appscript", "xattr", "ffi-xattr", "ruby_parser", "termios", "rb-fchange", "rb-kqueue", "celluloid", "celluloid-io", "faraday-middleware", "httpauth", "oa-core", "oa-oauth", "oa-openid", "oa-basic", "oa-enterprise", "oa-more", "ruby-hmac", "ruby-yadis", "opengraph_parser", "verbal_expressions", "hexpress", "pry-doc", "escape_utils", "activeresource", "actionwebservice", "bundler", "actioncable", "win32console", "yard", "spoon", "curses", "cucumber", "spicycode-rcov", "syntax", "hpricot", "bourne", "compass", "sprockets-sass", "slim", "webrat", "rspec-collection_matchers", "shotgun", "backports", "win32-process", "lockfile", "eventmachine-le", "http_parser.rb", "preforker"]
Query Gemcutter Dependency Endpoint API: hoe,atomic,abstract,memcache-client,archive-tar-minitar,rcov,mime-types-data,treetop,tlsmail,racc,rexical,tenderlove-frex,weakling,mini_portile,camping,fcgi,mongrel,test-spec,activerecord-deprecated_finders,jamespath,rack-mount,rack-cache,journey,activemodel-globalid,httparty,uuidtools,aws-sdk-v1,handlebars-source,ember-template-compiler-source,columnize,debugger-linecache,rb-readline,text-format,bcrypt-ruby,functional-ruby,rack-ssl,rdoc,active-model-adapter-source,addressable,sqlite3,newgem,bones,rb-appscript,xattr,ffi-xattr,ruby_parser,termios,rb-fchange,rb-kqueue,celluloid,celluloid-io,faraday-middleware,httpauth,oa-core,oa-oauth,oa-openid,oa-basic,oa-enterprise,oa-more,ruby-hmac,ruby-yadis,opengraph_parser,verbal_expressions,hexpress,pry-doc,escape_utils,activeresource,actionwebservice,bundler,actioncable,win32console,yard,spoon,curses,cucumber,spicycode-rcov,syntax,hpricot,bourne,compass,sprockets-sass,slim,webrat,rspec-collection_matchers,shotgun,backports,win32-process,lockfile,eventmachine-le,http_parser.rb,preforker
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=hoe%2Catomic%2Cabstract%2Cmemcache-client%2Carchive-tar-minitar%2Crcov%2Cmime-types-data%2Ctreetop%2Ctlsmail%2Cracc%2Crexical%2Ctenderlove-frex%2Cweakling%2Cmini_portile%2Ccamping%2Cfcgi%2Cmongrel%2Ctest-spec%2Cactiverecord-deprecated_finders%2Cjamespath%2Crack-mount%2Crack-cache%2Cjourney%2Cactivemodel-globalid%2Chttparty%2Cuuidtools%2Caws-sdk-v1%2Chandlebars-source%2Cember-template-compiler-source%2Ccolumnize%2Cdebugger-linecache%2Crb-readline%2Ctext-format%2Cbcrypt-ruby%2Cfunctional-ruby%2Crack-ssl%2Crdoc%2Cactive-model-adapter-source%2Caddressable%2Csqlite3%2Cnewgem%2Cbones%2Crb-appscript%2Cxattr%2Cffi-xattr%2Cruby_parser%2Ctermios%2Crb-fchange%2Crb-kqueue%2Ccelluloid
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=celluloid-io%2Cfaraday-middleware%2Chttpauth%2Coa-core%2Coa-oauth%2Coa-openid%2Coa-basic%2Coa-enterprise%2Coa-more%2Cruby-hmac%2Cruby-yadis%2Copengraph_parser%2Cverbal_expressions%2Chexpress%2Cpry-doc%2Cescape_utils%2Cactiveresource%2Cactionwebservice%2Cbundler%2Cactioncable%2Cwin32console%2Cyard%2Cspoon%2Ccurses%2Ccucumber%2Cspicycode-rcov%2Csyntax%2Chpricot%2Cbourne%2Ccompass%2Csprockets-sass%2Cslim%2Cwebrat%2Crspec-collection_matchers%2Cshotgun%2Cbackports%2Cwin32-process%2Clockfile%2Ceventmachine-le%2Chttp_parser.rb%2Cpreforker
HTTP 200 OK
Query List: ["ZenTest", "RubyInline", "rubyforge", "gemcutter", "markaby", "metaid", "mab", "cgi_multipart_eof_fix", "fastthread", "gem_plugin", "flexmock", "echoe", "jnunemaker-crack", "crack", "launchy", "ruby_core_source", "debugger-ruby_core_source", "timers", "facter", "celluloid-essentials", "celluloid-extras", "celluloid-fsm", "celluloid-pool", "celluloid-supervision", "dotenv", "nenv", "rspec-logsplit", "facets", "polyglot", "multimap", "text-hyphen", "bcrypt", "RedCloth", "rubigen", "little-plugger", "loquacious", "bones-extras", "bones-git", "ParseTree", "sexp_processor", "win32-api", "nio4r", "restclient", "ruby-openid-apps-discovery", "net-ldap", "rubyntlm", "pyu-ruby-sasl", "uuid", "XMLCanonicalizer", "coffee-rails", "em-hiredis", "faye-websocket", "websocket-driver", "sprockets-helpers", "temple", "term-ansicolor", "json_pure", "gherkin", "multi_test", "cucumber-core", "gherkin3", "cucumber-wire", "event-bus", "windows-pr", "haml", "chunky_png", "fssm", "compass-core", "compass-import-once"]
Query Gemcutter Dependency Endpoint API: ZenTest,RubyInline,rubyforge,gemcutter,markaby,metaid,mab,cgi_multipart_eof_fix,fastthread,gem_plugin,flexmock,echoe,jnunemaker-crack,crack,launchy,ruby_core_source,debugger-ruby_core_source,timers,facter,celluloid-essentials,celluloid-extras,celluloid-fsm,celluloid-pool,celluloid-supervision,dotenv,nenv,rspec-logsplit,facets,polyglot,multimap,text-hyphen,bcrypt,RedCloth,rubigen,little-plugger,loquacious,bones-extras,bones-git,ParseTree,sexp_processor,win32-api,nio4r,restclient,ruby-openid-apps-discovery,net-ldap,rubyntlm,pyu-ruby-sasl,uuid,XMLCanonicalizer,coffee-rails,em-hiredis,faye-websocket,websocket-driver,sprockets-helpers,temple,term-ansicolor,json_pure,gherkin,multi_test,cucumber-core,gherkin3,cucumber-wire,event-bus,windows-pr,haml,chunky_png,fssm,compass-core,compass-import-once
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=ZenTest%2CRubyInline%2Crubyforge%2Cgemcutter%2Cmarkaby%2Cmetaid%2Cmab%2Ccgi_multipart_eof_fix%2Cfastthread%2Cgem_plugin%2Cflexmock%2Cechoe%2Cjnunemaker-crack%2Ccrack%2Claunchy%2Cruby_core_source%2Cdebugger-ruby_core_source%2Ctimers%2Cfacter%2Ccelluloid-essentials%2Ccelluloid-extras%2Ccelluloid-fsm%2Ccelluloid-pool%2Ccelluloid-supervision%2Cdotenv%2Cnenv%2Crspec-logsplit%2Cfacets%2Cpolyglot%2Cmultimap%2Ctext-hyphen%2Cbcrypt%2CRedCloth%2Crubigen%2Clittle-plugger%2Cloquacious%2Cbones-extras%2Cbones-git%2CParseTree%2Csexp_processor%2Cwin32-api%2Cnio4r%2Crestclient%2Cruby-openid-apps-discovery%2Cnet-ldap%2Crubyntlm%2Cpyu-ruby-sasl%2Cuuid%2CXMLCanonicalizer%2Ccoffee-rails
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=em-hiredis%2Cfaye-websocket%2Cwebsocket-driver%2Csprockets-helpers%2Ctemple%2Cterm-ansicolor%2Cjson_pure%2Cgherkin%2Cmulti_test%2Ccucumber-core%2Cgherkin3%2Ccucumber-wire%2Cevent-bus%2Cwindows-pr%2Chaml%2Cchunky_png%2Cfssm%2Ccompass-core%2Ccompass-import-once
HTTP 200 OK
Query List: ["net-scp", "allison", "safe_yaml", "coveralls", "rubocop", "celluloid-gems", "dotenv-deployment", "thoughtbot-shoulda", "SexpProcessor", "test-unit", "macaddr", "log4r", "coffee-script", "configuration", "hitimes", "CFPropertyList", "sys-admin", "win32-dir", "windows-api", "win32-security", "bones-rcov", "bones-rspec", "bones-rubyforge", "bones-zentest", "git", "colored", "paint", "websocket-extensions", "spruz", "tins", "maruku"]
Query Gemcutter Dependency Endpoint API: net-scp,allison,safe_yaml,coveralls,rubocop,celluloid-gems,dotenv-deployment,thoughtbot-shoulda,SexpProcessor,test-unit,macaddr,log4r,coffee-script,configuration,hitimes,CFPropertyList,sys-admin,win32-dir,windows-api,win32-security,bones-rcov,bones-rspec,bones-rubyforge,bones-zentest,git,colored,paint,websocket-extensions,spruz,tins,maruku
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=net-scp%2Callison%2Csafe_yaml%2Ccoveralls%2Crubocop%2Ccelluloid-gems%2Cdotenv-deployment%2Cthoughtbot-shoulda%2CSexpProcessor%2Ctest-unit%2Cmacaddr%2Clog4r%2Ccoffee-script%2Cconfiguration%2Chitimes%2CCFPropertyList%2Csys-admin%2Cwin32-dir%2Cwindows-api%2Cwin32-security%2Cbones-rcov%2Cbones-rspec%2Cbones-rubyforge%2Cbones-zentest%2Cgit%2Ccolored%2Cpaint%2Cwebsocket-extensions%2Cspruz%2Ctins%2Cmaruku
HTTP 200 OK
Query List: ["net-ssh", "psych", "colorize", "power_assert", "rainbow", "parser", "powerpack", "ruby-progressbar", "astrolabe", "systemu", "coffee-script-source", "mkrf", "libxml-ruby"]
Query Gemcutter Dependency Endpoint API: net-ssh,psych,colorize,power_assert,rainbow,parser,powerpack,ruby-progressbar,astrolabe,systemu,coffee-script-source,mkrf,libxml-ruby
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=net-ssh%2Cpsych%2Ccolorize%2Cpower_assert%2Crainbow%2Cparser%2Cpowerpack%2Cruby-progressbar%2Castrolabe%2Csystemu%2Ccoffee-script-source%2Cmkrf%2Clibxml-ruby
HTTP 200 OK
Query List: ["needle", "jruby-pageant", "jar-dependencies", "pattern-match", "ast"]
Query Gemcutter Dependency Endpoint API: needle,jruby-pageant,jar-dependencies,pattern-match,ast
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=needle%2Cjruby-pageant%2Cjar-dependencies%2Cpattern-match%2Cast
HTTP 200 OK
Query List: ["ruby-maven"]
Query Gemcutter Dependency Endpoint API: ruby-maven
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=ruby-maven
HTTP 200 OK
Query List: ["maven-tools", "ruby-maven-libs"]
Query Gemcutter Dependency Endpoint API: maven-tools,ruby-maven-libs
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=maven-tools%2Cruby-maven-libs
HTTP 200 OK
Query List: ["virtus"]
Query Gemcutter Dependency Endpoint API: virtus
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=virtus
HTTP 200 OK
Query List: ["descendants_tracker", "axiom-types", "coercible", "equalizer"]
Query Gemcutter Dependency Endpoint API: descendants_tracker,axiom-types,coercible,equalizer
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=descendants_tracker%2Caxiom-types%2Ccoercible%2Cequalizer
HTTP 200 OK
Query List: ["ice_nine", "adamantium"]
Query Gemcutter Dependency Endpoint API: ice_nine,adamantium
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=ice_nine%2Cadamantium
HTTP 200 OK
Query List: ["memoizable"]
Query Gemcutter Dependency Endpoint API: memoizable
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=memoizable
HTTP 200 OK
Query List: []
Fetching version metadata from https://rubygems.org/
Query List: ["thread_safe", "backports", "ice_nine", "memoizable", "descendants_tracker", "adamantium", "axiom-types", "coercible", "equalizer", "virtus", "thor", "maven-tools", "ruby-maven-libs", "rake", "ruby-maven", "echoe", "needle", "jruby-pageant", "jar-dependencies", "hoe", "pattern-match", "sexp_processor", "ast", "slop", "parser", "net-ssh", "psych", "colorize", "json", "rest-client", "simplecov", "multi_json", "term-ansicolor", "tins", "activesupport", "power_assert", "rainbow", "powerpack", "ruby-progressbar", "astrolabe", "dotenv", "systemu", "coffee-script-source", "execjs", "configuration", "mkrf", "rake-compiler", "test-unit", "win32-security", "ffi", "windows-pr", "bones", "rcov", "ZenTest", "libxml-ruby", "win32-api", "sys-admin", "rspec", "rubyforge", "syntax", "net-scp", "json_pure", "builder", "highline", "gemcutter", "allison", "rdoc", "safe_yaml", "bundler", "celluloid-essentials", "celluloid-extras", "celluloid-pool", "celluloid-supervision", "rspec-logsplit", "timers", "coveralls", "rubocop", "nenv", "celluloid", "celluloid-gems", "dotenv-deployment", "newgem", "cucumber", "mocha", "thoughtbot-shoulda", "i18n", "RubyInline", "SexpProcessor", "ruby-openid", "macaddr", "log4r", "actionpack", "coffee-script", "railties", "sprockets", "spoon", "addressable", "archive-tar-minitar", "hitimes", "CFPropertyList", "win32console", "win32-dir", "windows-api", "celluloid-fsm", "bones-rcov", "bones-rspec", "bones-rubyforge", "bones-zentest", "git", "colored", "nokogiri", "paint", "hiredis", "eventmachine", "websocket-extensions", "thin", "websocket-driver", "spruz", "gherkin", "gherkin3", "trollop", "maruku", "yard", "tilt", "sass", "markaby", "metaid", "activerecord", "rack", "mab", "cgi_multipart_eof_fix", "daemons", "fastthread", "gem_plugin", "flexmock", "jnunemaker-crack", "crack", "multi_xml", "launchy", "ruby_core_source", "debugger-ruby_core_source", "facter", "facets", "polyglot", "multimap", "activemodel", "handlebars-source", "text-hyphen", "bcrypt", "minitest", "ember-source", "ember-data-source", "RedCloth", "rubigen", "little-plugger", "loquacious", "bones-extras", "bones-git", "ParseTree", "nio4r", "oa-core", "restclient", "oauth", "oauth2", "faraday", "rack-openid", "ruby-openid-apps-discovery", "net-ldap", "rubyntlm", "pyu-ruby-sasl", "uuid", "XMLCanonicalizer", "pry", "rails-observers", "coffee-rails", "em-hiredis", "faye-websocket", "redis", "erubis", "sprockets-helpers", "escape_utils", "temple", "hpricot", "rack-test", "diff-lcs", "treetop", "multi_test", "cucumber-core", "cucumber-wire", "event-bus", "rspec-expectations", "haml", "chunky_png", "fssm", "listen", "compass-core", "compass-import-once", "rb-fsevent", "rb-inotify", "atomic", "abstract", "rails-deprecated_sanitizer", "crass", "loofah", "memcache-client", "tzinfo", "concurrent-ruby", "method_source", "rails-dom-testing", "rails-html-sanitizer", "mime-types-data", "mime-types", "tlsmail", "racc", "rexical", "tenderlove-frex", "weakling", "mini_portile", "mini_portile2", "camping", "fcgi", "mongrel", "test-spec", "arel", "activerecord-deprecated_finders", "jamespath", "jmespath", "aws-sdk-core", "rack-mount", "rack-cache", "journey", "actionview", "activemodel-globalid", "globalid", "httparty", "uuidtools", "aws-sdk-v1", "aws-sdk-resources", "ember-template-compiler-source", "columnize", "debugger-linecache", "rb-readline", "mail", "text-format", "activejob", "bcrypt-ruby", "functional-ruby", "ref", "babel-source", "rack-ssl", "unf_ext", "unf", "hike", "barber", "rails", "active_model_serializers", "jquery-rails", "ember-handlebars-template", "active-model-adapter-source", "multipart-post", "fast_stack", "domain_name", "sqlite3", "rb-appscript", "xattr", "ffi-xattr", "ruby_parser", "metaclass", "sorcerer", "termios", "fspath", "image_size", "in_threads", "progress", "exifr", "rb-fchange", "rb-kqueue", "celluloid-io", "faraday-middleware", "httpauth", "jwt", "oa-oauth", "oa-openid", "oa-basic", "oa-enterprise", "oa-more", "hashie", "omniauth", "omniauth-oauth2", "ruby-hmac", "omniauth-oauth", "ruby-yadis", "moneta", "mustache", "opengraph_parser", "verbal_expressions", "hexpress", "htmlentities", "pry-doc", "actionmailer", "activeresource", "actionwebservice", "sprockets-rails", "actioncable", "coderay", "curses", "msgpack", "spicycode-rcov", "rspec-core", "rspec-mocks", "netrc", "http-cookie", "rspec-support", "given_core", "nokogumbo", "bourne", "connection_pool", "redis-namespace", "compass", "sprockets-sass", "sinatra", "slim", "sidekiq", "webrat", "rspec-collection_matchers", "guess_html_encoding", "shotgun", "rack-protection", "win32-process", "kgio", "raindrops", "shoulda-context", "shoulda-matchers", "simplecov-html", "docile", "lockfile", "spork", "libv8", "eventmachine-le", "http_parser.rb", "preforker", "therubyracer"]
Query Gemcutter Dependency Endpoint API: thread_safe,backports,ice_nine,memoizable,descendants_tracker,adamantium,axiom-types,coercible,equalizer,virtus,thor,maven-tools,ruby-maven-libs,rake,ruby-maven,echoe,needle,jruby-pageant,jar-dependencies,hoe,pattern-match,sexp_processor,ast,slop,parser,net-ssh,psych,colorize,json,rest-client,simplecov,multi_json,term-ansicolor,tins,activesupport,power_assert,rainbow,powerpack,ruby-progressbar,astrolabe,dotenv,systemu,coffee-script-source,execjs,configuration,mkrf,rake-compiler,test-unit,win32-security,ffi,windows-pr,bones,rcov,ZenTest,libxml-ruby,win32-api,sys-admin,rspec,rubyforge,syntax,net-scp,json_pure,builder,highline,gemcutter,allison,rdoc,safe_yaml,bundler,celluloid-essentials,celluloid-extras,celluloid-pool,celluloid-supervision,rspec-logsplit,timers,coveralls,rubocop,nenv,celluloid,celluloid-gems,dotenv-deployment,newgem,cucumber,mocha,thoughtbot-shoulda,i18n,RubyInline,SexpProcessor,ruby-openid,macaddr,log4r,actionpack,coffee-script,railties,sprockets,spoon,addressable,archive-tar-minitar,hitimes,CFPropertyList,win32console,win32-dir,windows-api,celluloid-fsm,bones-rcov,bones-rspec,bones-rubyforge,bones-zentest,git,colored,nokogiri,paint,hiredis,eventmachine,websocket-extensions,thin,websocket-driver,spruz,gherkin,gherkin3,trollop,maruku,yard,tilt,sass,markaby,metaid,activerecord,rack,mab,cgi_multipart_eof_fix,daemons,fastthread,gem_plugin,flexmock,jnunemaker-crack,crack,multi_xml,launchy,ruby_core_source,debugger-ruby_core_source,facter,facets,polyglot,multimap,activemodel,handlebars-source,text-hyphen,bcrypt,minitest,ember-source,ember-data-source,RedCloth,rubigen,little-plugger,loquacious,bones-extras,bones-git,ParseTree,nio4r,oa-core,restclient,oauth,oauth2,faraday,rack-openid,ruby-openid-apps-discovery,net-ldap,rubyntlm,pyu-ruby-sasl,uuid,XMLCanonicalizer,pry,rails-observers,coffee-rails,em-hiredis,faye-websocket,redis,erubis,sprockets-helpers,escape_utils,temple,hpricot,rack-test,diff-lcs,treetop,multi_test,cucumber-core,cucumber-wire,event-bus,rspec-expectations,haml,chunky_png,fssm,listen,compass-core,compass-import-once,rb-fsevent,rb-inotify,atomic,abstract,rails-deprecated_sanitizer,crass,loofah,memcache-client,tzinfo,concurrent-ruby,method_source,rails-dom-testing,rails-html-sanitizer,mime-types-data,mime-types,tlsmail,racc,rexical,tenderlove-frex,weakling,mini_portile,mini_portile2,camping,fcgi,mongrel,test-spec,arel,activerecord-deprecated_finders,jamespath,jmespath,aws-sdk-core,rack-mount,rack-cache,journey,actionview,activemodel-globalid,globalid,httparty,uuidtools,aws-sdk-v1,aws-sdk-resources,ember-template-compiler-source,columnize,debugger-linecache,rb-readline,mail,text-format,activejob,bcrypt-ruby,functional-ruby,ref,babel-source,rack-ssl,unf_ext,unf,hike,barber,rails,active_model_serializers,jquery-rails,ember-handlebars-template,active-model-adapter-source,multipart-post,fast_stack,domain_name,sqlite3,rb-appscript,xattr,ffi-xattr,ruby_parser,metaclass,sorcerer,termios,fspath,image_size,in_threads,progress,exifr,rb-fchange,rb-kqueue,celluloid-io,faraday-middleware,httpauth,jwt,oa-oauth,oa-openid,oa-basic,oa-enterprise,oa-more,hashie,omniauth,omniauth-oauth2,ruby-hmac,omniauth-oauth,ruby-yadis,moneta,mustache,opengraph_parser,verbal_expressions,hexpress,htmlentities,pry-doc,actionmailer,activeresource,actionwebservice,sprockets-rails,actioncable,coderay,curses,msgpack,spicycode-rcov,rspec-core,rspec-mocks,netrc,http-cookie,rspec-support,given_core,nokogumbo,bourne,connection_pool,redis-namespace,compass,sprockets-sass,sinatra,slim,sidekiq,webrat,rspec-collection_matchers,guess_html_encoding,shotgun,rack-protection,win32-process,kgio,raindrops,shoulda-context,shoulda-matchers,simplecov-html,docile,lockfile,spork,libv8,eventmachine-le,http_parser.rb,preforker,therubyracer
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=thread_safe%2Cbackports%2Cice_nine%2Cmemoizable%2Cdescendants_tracker%2Cadamantium%2Caxiom-types%2Ccoercible%2Cequalizer%2Cvirtus%2Cthor%2Cmaven-tools%2Cruby-maven-libs%2Crake%2Cruby-maven%2Cechoe%2Cneedle%2Cjruby-pageant%2Cjar-dependencies%2Choe%2Cpattern-match%2Csexp_processor%2Cast%2Cslop%2Cparser%2Cnet-ssh%2Cpsych%2Ccolorize%2Cjson%2Crest-client%2Csimplecov%2Cmulti_json%2Cterm-ansicolor%2Ctins%2Cactivesupport%2Cpower_assert%2Crainbow%2Cpowerpack%2Cruby-progressbar%2Castrolabe%2Cdotenv%2Csystemu%2Ccoffee-script-source%2Cexecjs%2Cconfiguration%2Cmkrf%2Crake-compiler%2Ctest-unit%2Cwin32-security%2Cffi
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=windows-pr%2Cbones%2Crcov%2CZenTest%2Clibxml-ruby%2Cwin32-api%2Csys-admin%2Crspec%2Crubyforge%2Csyntax%2Cnet-scp%2Cjson_pure%2Cbuilder%2Chighline%2Cgemcutter%2Callison%2Crdoc%2Csafe_yaml%2Cbundler%2Ccelluloid-essentials%2Ccelluloid-extras%2Ccelluloid-pool%2Ccelluloid-supervision%2Crspec-logsplit%2Ctimers%2Ccoveralls%2Crubocop%2Cnenv%2Ccelluloid%2Ccelluloid-gems%2Cdotenv-deployment%2Cnewgem%2Ccucumber%2Cmocha%2Cthoughtbot-shoulda%2Ci18n%2CRubyInline%2CSexpProcessor%2Cruby-openid%2Cmacaddr%2Clog4r%2Cactionpack%2Ccoffee-script%2Crailties%2Csprockets%2Cspoon%2Caddressable%2Carchive-tar-minitar%2Chitimes%2CCFPropertyList
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=win32console%2Cwin32-dir%2Cwindows-api%2Ccelluloid-fsm%2Cbones-rcov%2Cbones-rspec%2Cbones-rubyforge%2Cbones-zentest%2Cgit%2Ccolored%2Cnokogiri%2Cpaint%2Chiredis%2Ceventmachine%2Cwebsocket-extensions%2Cthin%2Cwebsocket-driver%2Cspruz%2Cgherkin%2Cgherkin3%2Ctrollop%2Cmaruku%2Cyard%2Ctilt%2Csass%2Cmarkaby%2Cmetaid%2Cactiverecord%2Crack%2Cmab%2Ccgi_multipart_eof_fix%2Cdaemons%2Cfastthread%2Cgem_plugin%2Cflexmock%2Cjnunemaker-crack%2Ccrack%2Cmulti_xml%2Claunchy%2Cruby_core_source%2Cdebugger-ruby_core_source%2Cfacter%2Cfacets%2Cpolyglot%2Cmultimap%2Cactivemodel%2Chandlebars-source%2Ctext-hyphen%2Cbcrypt%2Cminitest
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=ember-source%2Cember-data-source%2CRedCloth%2Crubigen%2Clittle-plugger%2Cloquacious%2Cbones-extras%2Cbones-git%2CParseTree%2Cnio4r%2Coa-core%2Crestclient%2Coauth%2Coauth2%2Cfaraday%2Crack-openid%2Cruby-openid-apps-discovery%2Cnet-ldap%2Crubyntlm%2Cpyu-ruby-sasl%2Cuuid%2CXMLCanonicalizer%2Cpry%2Crails-observers%2Ccoffee-rails%2Cem-hiredis%2Cfaye-websocket%2Credis%2Cerubis%2Csprockets-helpers%2Cescape_utils%2Ctemple%2Chpricot%2Crack-test%2Cdiff-lcs%2Ctreetop%2Cmulti_test%2Ccucumber-core%2Ccucumber-wire%2Cevent-bus%2Crspec-expectations%2Chaml%2Cchunky_png%2Cfssm%2Clisten%2Ccompass-core%2Ccompass-import-once%2Crb-fsevent%2Crb-inotify%2Catomic
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=abstract%2Crails-deprecated_sanitizer%2Ccrass%2Cloofah%2Cmemcache-client%2Ctzinfo%2Cconcurrent-ruby%2Cmethod_source%2Crails-dom-testing%2Crails-html-sanitizer%2Cmime-types-data%2Cmime-types%2Ctlsmail%2Cracc%2Crexical%2Ctenderlove-frex%2Cweakling%2Cmini_portile%2Cmini_portile2%2Ccamping%2Cfcgi%2Cmongrel%2Ctest-spec%2Carel%2Cactiverecord-deprecated_finders%2Cjamespath%2Cjmespath%2Caws-sdk-core%2Crack-mount%2Crack-cache%2Cjourney%2Cactionview%2Cactivemodel-globalid%2Cglobalid%2Chttparty%2Cuuidtools%2Caws-sdk-v1%2Caws-sdk-resources%2Cember-template-compiler-source%2Ccolumnize%2Cdebugger-linecache%2Crb-readline%2Cmail%2Ctext-format%2Cactivejob%2Cbcrypt-ruby%2Cfunctional-ruby%2Cref%2Cbabel-source%2Crack-ssl
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=unf_ext%2Cunf%2Chike%2Cbarber%2Crails%2Cactive_model_serializers%2Cjquery-rails%2Cember-handlebars-template%2Cactive-model-adapter-source%2Cmultipart-post%2Cfast_stack%2Cdomain_name%2Csqlite3%2Crb-appscript%2Cxattr%2Cffi-xattr%2Cruby_parser%2Cmetaclass%2Csorcerer%2Ctermios%2Cfspath%2Cimage_size%2Cin_threads%2Cprogress%2Cexifr%2Crb-fchange%2Crb-kqueue%2Ccelluloid-io%2Cfaraday-middleware%2Chttpauth%2Cjwt%2Coa-oauth%2Coa-openid%2Coa-basic%2Coa-enterprise%2Coa-more%2Chashie%2Comniauth%2Comniauth-oauth2%2Cruby-hmac%2Comniauth-oauth%2Cruby-yadis%2Cmoneta%2Cmustache%2Copengraph_parser%2Cverbal_expressions%2Chexpress%2Chtmlentities%2Cpry-doc%2Cactionmailer
HTTP 200 OK
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=activeresource%2Cactionwebservice%2Csprockets-rails%2Cactioncable%2Ccoderay%2Ccurses%2Cmsgpack%2Cspicycode-rcov%2Crspec-core%2Crspec-mocks%2Cnetrc%2Chttp-cookie%2Crspec-support%2Cgiven_core%2Cnokogumbo%2Cbourne%2Cconnection_pool%2Credis-namespace%2Ccompass%2Csprockets-sass%2Csinatra%2Cslim%2Csidekiq%2Cwebrat%2Crspec-collection_matchers%2Cguess_html_encoding%2Cshotgun%2Crack-protection%2Cwin32-process%2Ckgio%2Craindrops%2Cshoulda-context%2Cshoulda-matchers%2Csimplecov-html%2Cdocile%2Clockfile%2Cspork%2Clibv8%2Ceventmachine-le%2Chttp_parser.rb%2Cpreforker%2Ctherubyracer
HTTP 200 OK
Query List: ["celluloid-gems", "faraday-middleware"]
Query Gemcutter Dependency Endpoint API: celluloid-gems,faraday-middleware
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=celluloid-gems%2Cfaraday-middleware
HTTP 200 OK
Query List: []
Fetching dependency metadata from https://rubygems.org/
Query List: ["celluloid-gems", "faraday-middleware"]
Query Gemcutter Dependency Endpoint API: celluloid-gems,faraday-middleware
HTTP GET https://bundler.rubygems.org/api/v1/dependencies?gems=celluloid-gems%2Cfaraday-middleware
HTTP 200 OK
Query List: []
Using rake 10.5.0
0: rake (10.5.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rake-10.5.0.gemspec
Using i18n 0.7.0
0: i18n (0.7.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/i18n-0.7.0.gemspec
Using json 1.8.3
0: json (1.8.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/json-1.8.3.gemspec
Using minitest 5.8.4
0: minitest (5.8.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/minitest-5.8.4.gemspec
Using thread_safe 0.3.5
0: thread_safe (0.3.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/thread_safe-0.3.5.gemspec
Using builder 3.2.2
0: builder (3.2.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/builder-3.2.2.gemspec
Using erubis 2.7.0
0: erubis (2.7.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/erubis-2.7.0.gemspec
Using mini_portile2 2.0.0
0: mini_portile2 (2.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/mini_portile2-2.0.0.gemspec
Using rack 1.6.4
0: rack (1.6.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rack-1.6.4.gemspec
Using mime-types 2.99
0: mime-types (2.99) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/mime-types-2.99.gemspec
Using arel 6.0.3
0: arel (6.0.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/arel-6.0.3.gemspec
Using jmespath 1.1.3
0: jmespath (1.1.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/jmespath-1.1.3.gemspec
Using babel-source 5.8.34
0: babel-source (5.8.34) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/babel-source-5.8.34.gemspec
Using execjs 2.6.0
0: execjs (2.6.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/execjs-2.6.0.gemspec
Using ember-source 1.12.2
0: ember-source (1.12.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ember-source-1.12.2.gemspec
Using byebug 8.2.1
0: byebug (8.2.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/byebug-8.2.1.gemspec
Using certified 1.0.0
0: certified (1.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/certified-1.0.0.gemspec
Using coderay 1.1.0
0: coderay (1.1.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/coderay-1.1.0.gemspec
Using concurrent-ruby 1.0.0
0: concurrent-ruby (1.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/concurrent-ruby-1.0.0.gemspec
Using connection_pool 2.2.0
0: connection_pool (2.2.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/connection_pool-2.2.0.gemspec
Using crass 1.0.2
0: crass (1.0.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/crass-1.0.2.gemspec
Using daemons 1.2.3
0: daemons (1.2.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/daemons-1.2.3.gemspec
Using diff-lcs 1.2.5
0: diff-lcs (1.2.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/diff-lcs-1.2.5.gemspec
Using thor 0.19.1
0: thor (0.19.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/thor-0.19.1.gemspec
Using docile 1.1.5
0: docile (1.1.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/docile-1.1.5.gemspec
Using unf_ext 0.0.7.1
0: unf_ext (0.0.7.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/unf_ext-0.0.7.1.gemspec
Installing email_reply_trimmer 0.0.3
0: email_reply_trimmer (0.0.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/email_reply_trimmer-0.0.3.gemspec
Using hike 1.2.3
0: hike (1.2.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/hike-1.2.3.gemspec
Using multi_json 1.11.2
0: multi_json (1.11.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/multi_json-1.11.2.gemspec
Using tilt 1.4.1
0: tilt (1.4.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/tilt-1.4.1.gemspec
Using eventmachine 1.0.8
0: eventmachine (1.0.8) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/eventmachine-1.0.8.gemspec
Using excon 0.45.4
0: excon (0.45.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/excon-0.45.4.gemspec
Using exifr 1.2.4
0: exifr (1.2.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/exifr-1.2.4.gemspec
Using fabrication 2.9.8
0: fabrication (2.9.8) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fabrication-2.9.8.gemspec
Using fakeweb 1.3.0
0: fakeweb (1.3.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fakeweb-1.3.0.gemspec
Using multipart-post 2.0.0
0: multipart-post (2.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/multipart-post-2.0.0.gemspec
Using fast_blank 1.0.0
0: fast_blank (1.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fast_blank-1.0.0.gemspec
Using fast_xs 0.8.0
0: fast_xs (0.8.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fast_xs-0.8.0.gemspec
Using fastimage_discourse 1.6.6
0: fastimage_discourse (1.6.6) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fastimage_discourse-1.6.6.gemspec
Using ffi 1.9.10
0: ffi (1.9.10) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ffi-1.9.10.gemspec
Using fspath 2.1.1
0: fspath (2.1.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fspath-2.1.1.gemspec
Using sorcerer 1.0.2
0: sorcerer (1.0.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sorcerer-1.0.2.gemspec
Using guess_html_encoding 0.0.11
0: guess_html_encoding (0.0.11) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/guess_html_encoding-0.0.11.gemspec
Using hashie 3.4.3
0: hashie (3.4.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/hashie-3.4.3.gemspec
Using highline 1.7.8
0: highline (1.7.8) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/highline-1.7.8.gemspec
Using hiredis 0.6.1
0: hiredis (0.6.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/hiredis-0.6.1.gemspec
Using htmlentities 4.3.4
0: htmlentities (4.3.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/htmlentities-4.3.4.gemspec
Using image_size 1.4.1
0: image_size (1.4.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/image_size-1.4.1.gemspec
Using in_threads 1.3.1
0: in_threads (1.3.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/in_threads-1.3.1.gemspec
Using progress 3.1.1
0: progress (3.1.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/progress-3.1.1.gemspec
Using jwt 1.5.2
0: jwt (1.5.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/jwt-1.5.2.gemspec
Using kgio 2.10.0
0: kgio (2.10.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/kgio-2.10.0.gemspec
Using libv8 3.16.14.13
0: libv8 (3.16.14.13) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/libv8-3.16.14.13-x86_64-linux.gemspec
Using listen 0.7.3
0: listen (0.7.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/listen-0.7.3.gemspec
Using logster 1.0.1
0: logster (1.0.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/logster-1.0.1.gemspec
Using lru_redux 1.1.0
0: lru_redux (1.1.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/lru_redux-1.1.0.gemspec
Using redis 3.2.2
0: redis (3.2.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/redis-3.2.2.gemspec
Using metaclass 0.0.4
0: metaclass (0.0.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/metaclass-0.0.4.gemspec
Using method_source 0.8.2
0: method_source (0.8.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/method_source-0.8.2.gemspec
Using mock_redis 0.15.4
0: mock_redis (0.15.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/mock_redis-0.15.4.gemspec
Using moneta 0.8.0
0: moneta (0.8.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/moneta-0.8.0.gemspec
Using msgpack 0.7.4
0: msgpack (0.7.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/msgpack-0.7.4.gemspec
Using multi_xml 0.5.5
0: multi_xml (0.5.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/multi_xml-0.5.5.gemspec
Using mustache 1.0.2
0: mustache (1.0.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/mustache-1.0.2.gemspec
Using netrc 0.11.0
0: netrc (0.11.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/netrc-0.11.0.gemspec
Using oauth 0.4.7
0: oauth (0.4.7) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/oauth-0.4.7.gemspec
Using oj 2.14.3
0: oj (2.14.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/oj-2.14.3.gemspec
Using ruby-openid 2.7.0
0: ruby-openid (2.7.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ruby-openid-2.7.0.gemspec
Using pg 0.18.4
0: pg (0.18.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/pg-0.18.4.gemspec
Using slop 3.6.0
0: slop (3.6.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/slop-3.6.0.gemspec
Using puma 2.15.3
0: puma (2.15.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/puma-2.15.3.gemspec
Using r2 0.2.6
0: r2 (0.2.6) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/r2-0.2.6.gemspec
Using bundler 1.11.2
0: bundler (1.11.2) from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.11.2/lib/bundler/source
Using rails_multisite 1.0.3
0: rails_multisite (1.0.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rails_multisite-1.0.3.gemspec
Using raindrops 0.15.0
0: raindrops (0.15.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/raindrops-0.15.0.gemspec
Using rb-fsevent 0.9.7
0: rb-fsevent (0.9.7) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rb-fsevent-0.9.7.gemspec
Using trollop 2.1.2
0: trollop (2.1.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/trollop-2.1.2.gemspec
Using ref 2.0.0
0: ref (2.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ref-2.0.0.gemspec
Using rinku 1.7.3
0: rinku (1.7.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rinku-1.7.3.gemspec
Using rmmseg-cpp 0.2.9
0: rmmseg-cpp (0.2.9) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rmmseg-cpp-0.2.9.gemspec
Using rspec-support 3.2.2
0: rspec-support (3.2.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-support-3.2.2.gemspec
Using rtlit 0.0.5
0: rtlit (0.0.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rtlit-0.0.5.gemspec
Using sass 3.2.19
0: sass (3.2.19) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sass-3.2.19.gemspec
Using shoulda-context 1.2.1
0: shoulda-context (1.2.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/shoulda-context-1.2.1.gemspec
Using simple-rss 1.3.1
0: simple-rss (1.3.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/simple-rss-1.3.1.gemspec
Using simplecov-html 0.10.0
0: simplecov-html (0.10.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/simplecov-html-0.10.0.gemspec
Using spork 1.0.0rc4
0: spork (1.0.0rc4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/spork-1.0.0rc4.gemspec
Using timecop 0.8.0
0: timecop (0.8.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/timecop-0.8.0.gemspec
Using rake-compiler 0.9.5
0: rake-compiler (0.9.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rake-compiler-0.9.5.gemspec
Using tzinfo 1.2.2
0: tzinfo (1.2.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/tzinfo-1.2.2.gemspec
Using nokogiri 1.6.7.2
0: nokogiri (1.6.7.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/nokogiri-1.6.7.2.gemspec
Using rack-test 0.6.3
0: rack-test (0.6.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rack-test-0.6.3.gemspec
Using rack-mini-profiler 0.9.8
0: rack-mini-profiler (0.9.8) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rack-mini-profiler-0.9.8.gemspec
Using rack-protection 1.5.3
0: rack-protection (1.5.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rack-protection-1.5.3.gemspec
Using mail 2.6.3
0: mail (2.6.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/mail-2.6.3.gemspec
Using aws-sdk-core 2.2.9
0: aws-sdk-core (2.2.9) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/aws-sdk-core-2.2.9.gemspec
Using babel-transpiler 0.7.0
0: babel-transpiler (0.7.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/babel-transpiler-0.7.0.gemspec
Using uglifier 2.7.2
0: uglifier (2.7.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/uglifier-2.7.2.gemspec
Using barber 0.9.0
0: barber (0.9.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/barber-0.9.0.gemspec
Using ember-data-source 1.0.0.beta.16.1
0: ember-data-source (1.0.0.beta.16.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ember-data-source-1.0.0.beta.16.1.gemspec
Using unf 0.1.4
0: unf (0.1.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/unf-0.1.4.gemspec
Using sprockets 2.11.0
0: sprockets (2.11.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sprockets-2.11.0.gemspec
Using thin 1.6.4
0: thin (1.6.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/thin-1.6.4.gemspec
Using faraday 0.9.2
0: faraday (0.9.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/faraday-0.9.2.gemspec
Using rb-inotify 0.9.5
0: rb-inotify (0.9.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rb-inotify-0.9.5.gemspec
Using given_core 3.7.1
0: given_core (3.7.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/given_core-3.7.1.gemspec
Using omniauth 1.3.1
0: omniauth (1.3.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-1.3.1.gemspec
Using image_optim 0.20.2
0: image_optim (0.20.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/image_optim-0.20.2.gemspec
Using message_bus 2.0.0.beta.2
0: message_bus (2.0.0.beta.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/message_bus-2.0.0.beta.2.gemspec
Using redis-namespace 1.5.2
0: redis-namespace (1.5.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/redis-namespace-1.5.2.gemspec
Using sidekiq 4.0.2
0: sidekiq (4.0.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sidekiq-4.0.2.gemspec
Using mocha 1.1.0
0: mocha (1.1.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/mocha-1.1.0.gemspec
Using rack-openid 1.3.1
0: rack-openid (1.3.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rack-openid-1.3.1.gemspec
Using openid-redis-store 0.0.2
0: openid-redis-store (0.0.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/openid-redis-store-0.0.2.gemspec
Using pry 0.10.3
0: pry (0.10.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/pry-0.10.3.gemspec
Using unicorn 5.0.1
0: unicorn (5.0.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/unicorn-5.0.1.gemspec
Using rbtrace 0.4.7
0: rbtrace (0.4.7) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rbtrace-0.4.7.gemspec
Using therubyracer 0.12.2
0: therubyracer (0.12.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/therubyracer-0.12.2.gemspec
Using rspec-core 3.2.3
0: rspec-core (3.2.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-core-3.2.3.gemspec
Using rspec-expectations 3.2.1
0: rspec-expectations (3.2.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-expectations-3.2.1.gemspec
Using rspec-mocks 3.2.1
0: rspec-mocks (3.2.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-mocks-3.2.1.gemspec
Using simplecov 0.11.1
0: simplecov (0.11.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/simplecov-0.11.1.gemspec
Using fast_stack 0.1.0
0: fast_stack (0.1.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fast_stack-0.1.0.gemspec
Using fast_xor 1.1.3
0: fast_xor (1.1.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/fast_xor-1.1.3.gemspec
Using activesupport 4.2.5.1
0: activesupport (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/activesupport-4.2.5.1.gemspec
Using loofah 2.0.3
0: loofah (2.0.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/loofah-2.0.3.gemspec
Using nokogumbo 1.4.7
0: nokogumbo (1.4.7) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/nokogumbo-1.4.7.gemspec
Installing onebox 1.5.34
0: onebox (1.5.34) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/onebox-1.5.34.gemspec
Using ruby-readability 0.7.0
0: ruby-readability (0.7.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ruby-readability-0.7.0.gemspec
Using sinatra 1.4.6
0: sinatra (1.4.6) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sinatra-1.4.6.gemspec
Using aws-sdk-resources 2.2.9
0: aws-sdk-resources (2.2.9) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/aws-sdk-resources-2.2.9.gemspec
Using domain_name 0.5.25
0: domain_name (0.5.25) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/domain_name-0.5.25.gemspec
Using ember-handlebars-template 0.1.5
0: ember-handlebars-template (0.1.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ember-handlebars-template-0.1.5.gemspec
Using oauth2 1.0.0
0: oauth2 (1.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/oauth2-1.0.0.gemspec
Using omniauth-oauth 1.1.0
0: omniauth-oauth (1.1.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-oauth-1.1.0.gemspec
Using sidekiq-statistic 1.2.0
0: sidekiq-statistic (1.2.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sidekiq-statistic-1.2.0.gemspec
Using omniauth-openid 1.0.1
0: omniauth-openid (1.0.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-openid-1.0.1.gemspec
Using pry-nav 0.2.4
0: pry-nav (0.2.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/pry-nav-0.2.4.gemspec
Using pry-rails 0.3.4
0: pry-rails (0.3.4) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/pry-rails-0.3.4.gemspec
Using rspec 3.2.0
0: rspec (3.2.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-3.2.0.gemspec
Using flamegraph 0.1.0
0: flamegraph (0.1.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/flamegraph-0.1.0.gemspec
Using rails-deprecated_sanitizer 1.0.3
0: rails-deprecated_sanitizer (1.0.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rails-deprecated_sanitizer-1.0.3.gemspec
Using globalid 0.3.6
0: globalid (0.3.6) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/globalid-0.3.6.gemspec
Using activemodel 4.2.5.1
0: activemodel (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/activemodel-4.2.5.1.gemspec
Using shoulda-matchers 2.8.0
0: shoulda-matchers (2.8.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/shoulda-matchers-2.8.0.gemspec
Using rails-html-sanitizer 1.0.3
0: rails-html-sanitizer (1.0.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rails-html-sanitizer-1.0.3.gemspec
Using sanitize 4.0.1
0: sanitize (4.0.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sanitize-4.0.1.gemspec
Using aws-sdk 2.2.9
0: aws-sdk (2.2.9) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/aws-sdk-2.2.9.gemspec
Using http-cookie 1.0.2
0: http-cookie (1.0.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/http-cookie-1.0.2.gemspec
Using omniauth-oauth2 1.3.1
0: omniauth-oauth2 (1.3.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-oauth2-1.3.1.gemspec
Using omniauth-twitter 1.2.1
0: omniauth-twitter (1.2.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-twitter-1.2.1.gemspec
Using rspec-given 3.7.1
0: rspec-given (3.7.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-given-3.7.1.gemspec
Using rspec-html-matchers 0.7.0
0: rspec-html-matchers (0.7.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-html-matchers-0.7.0.gemspec
Using rails-dom-testing 1.0.7
0: rails-dom-testing (1.0.7) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rails-dom-testing-1.0.7.gemspec
Using activejob 4.2.5.1
0: activejob (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/activejob-4.2.5.1.gemspec
Using active_model_serializers 0.8.3
0: active_model_serializers (0.8.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/active_model_serializers-0.8.3.gemspec
Using activerecord 4.2.5.1
0: activerecord (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/activerecord-4.2.5.1.gemspec
Using rails-observers 0.1.2
0: rails-observers (0.1.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rails-observers-0.1.2.gemspec
Using shoulda 3.5.0
0: shoulda (3.5.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/shoulda-3.5.0.gemspec
Using rest-client 1.8.0
0: rest-client (1.8.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rest-client-1.8.0.gemspec
Using omniauth-facebook 3.0.0
0: omniauth-facebook (3.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-facebook-3.0.0.gemspec
Using omniauth-github-discourse 1.1.2
0: omniauth-github-discourse (1.1.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-github-discourse-1.1.2.gemspec
Installing omniauth-google-oauth2 0.3.1
0: omniauth-google-oauth2 (0.3.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/omniauth-google-oauth2-0.3.1.gemspec
Using actionview 4.2.5.1
0: actionview (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/actionview-4.2.5.1.gemspec
Using seed-fu 2.3.5
0: seed-fu (2.3.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/seed-fu-2.3.5.gemspec
Using actionpack 4.2.5.1
0: actionpack (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/actionpack-4.2.5.1.gemspec
Using actionmailer 4.2.5.1
0: actionmailer (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/actionmailer-4.2.5.1.gemspec
Using railties 4.2.5.1
0: railties (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/railties-4.2.5.1.gemspec
Using sprockets-rails 2.0.1
0: sprockets-rails (2.0.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sprockets-rails-2.0.1.gemspec
Using discourse-qunit-rails 0.0.8
0: discourse-qunit-rails (0.0.8) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/discourse-qunit-rails-0.0.8.gemspec
Using jquery-rails 4.0.5
0: jquery-rails (4.0.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/jquery-rails-4.0.5.gemspec
Using rspec-rails 3.2.3
0: rspec-rails (3.2.3) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rspec-rails-3.2.3.gemspec
Using rails 4.2.5.1
0: rails (4.2.5.1) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/rails-4.2.5.1.gemspec
Using sass-rails 4.0.5
0: sass-rails (4.0.5) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/sass-rails-4.0.5.gemspec
Using ember-rails 0.18.2
0: ember-rails (0.18.2) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/ember-rails-0.18.2.gemspec
Using spork-rails 4.0.0
0: spork-rails (4.0.0) from /var/www/discourse/vendor/bundle/ruby/2.0.0/specifications/spork-rails-4.0.0.gemspec
Bundle complete! 94 Gemfile dependencies, 176 gems now installed.
Gems in the group development were not installed.
Bundled gems are installed into ./vendor/bundle.
I, [2016-01-31T22:34:31.158351 #38] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
2016-01-31 22:34:36 UTC [350-1] discourse@discourse ERROR: relation "users" does not exist at character 323
2016-01-31 22:34:36 UTC [350-2] discourse@discourse STATEMENT: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
I, [2016-01-31T22:34:48.003379 #38] INFO -- : == 20120311163914 CreateForumThreads: migrating ===============================
-- create_table(:forum_threads)
-> 0.0517s
== 20120311163914 CreateForumThreads: migrated (0.0518s) ======================
== 20120311164326 CreatePosts: migrating ======================================
-- create_table(:posts)
-> 0.0139s
-- add_index(:posts, [:forum_thread_id, :created_at])
-> 0.0151s
== 20120311164326 CreatePosts: migrated (0.0292s) =============================
== 20120311170118 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0209s
== 20120311170118 CreateUsers: migrated (0.0209s) =============================
== 20120311201341 CreateForums: migrating =====================================
-- create_table(:forums)
-> 0.0077s
== 20120311201341 CreateForums: migrated (0.0078s) ============================
== 20120311210245 CreateSites: migrating ======================================
-- create_table(:sites)
-> 0.0075s
== 20120311210245 CreateSites: migrated (0.0076s) =============================
== 20120416201606 AddReplyToToPosts: migrating ================================
-- add_column(:posts, :reply_to_post_number, :integer, {:null=>true})
-> 0.0005s
-- add_index(:posts, :reply_to_post_number)
-> 0.0113s
== 20120416201606 AddReplyToToPosts: migrated (0.0118s) =======================
== 20120420183447 AddViewsToForumThreads: migrating ===========================
-- add_column(:forum_threads, :views, :integer, {:default=>0, :null=>false})
-> 0.0292s
== 20120420183447 AddViewsToForumThreads: migrated (0.0293s) ==================
== 20120423140906 AddPostsCountToForumThreads: migrating ======================
-- add_column(:forum_threads, :posts_count, :integer, {:default=>0, :null=>false})
-> 0.0178s
-- execute("UPDATE forum_threads SET posts_count = (SELECT count(*) FROM posts WHERE posts.forum_thread_id = forum_threads.id)")
-> 0.0006s
== 20120423140906 AddPostsCountToForumThreads: migrated (0.0185s) =============
== 20120423142820 FixPostIndices: migrating ===================================
-- remove_index(:posts, [:forum_thread_id, :created_at])
-> 0.0169s
-- add_index(:posts, [:forum_thread_id, :post_number])
-> 0.0076s
== 20120423142820 FixPostIndices: migrated (0.0247s) ==========================
== 20120423151548 RemoveLastPostId: migrating =================================
-- remove_column(:forum_threads, :last_post_id)
-> 0.0004s
== 20120423151548 RemoveLastPostId: migrated (0.0004s) ========================
== 20120425145456 AddDisplayUsernameToUsers: migrating ========================
-- add_column(:users, :display_username, :string)
-> 0.0004s
-- execute("UPDATE users SET display_username = username")
-> 0.0002s
-- execute("UPDATE users SET username = REPLACE(username, ' ', '')")
-> 0.0008s
-- add_index(:users, :username, {:unique=>true})
-> 0.0051s
== 20120425145456 AddDisplayUsernameToUsers: migrated (0.0067s) ===============
== 20120427150624 AddUserIdIndexToPosts: migrating ============================
-- add_index(:posts, :user_id)
-> 0.0084s
== 20120427150624 AddUserIdIndexToPosts: migrated (0.0084s) ===================
== 20120427151452 CookedMigration: migrating ==================================
-- rename_column(:posts, :content, :raw)
-> 0.0034s
-- rename_column(:posts, :formatted_content, :cooked)
-> 0.0016s
== 20120427151452 CookedMigration: migrated (0.0050s) =========================
== 20120427154330 CreateVestalVersions: migrating =============================
-- create_table(:versions)
-> 0.0256s
-- change_table(:versions)
-> 0.0567s
== 20120427154330 CreateVestalVersions: migrated (0.0824s) ====================
== 20120427172031 AddVersionToPosts: migrating ================================
-- add_column(:posts, :cached_version, :integer, {:null=>false, :default=>1})
-> 0.0581s
== 20120427172031 AddVersionToPosts: migrated (0.0582s) =======================
== 20120502183240 AddCreatedByToForumThreads: migrating =======================
-- add_column(:forum_threads, :user_id, :integer)
-> 0.0048s
-- execute("update forum_threads t\n set user_id = (select user_id from posts where forum_thread_id = t.Id order by post_number asc limit 1)")
-> 0.0007s
-- change_column(:forum_threads, :user_id, :integer, {:null=>false})
-> 0.0005s
== 20120502183240 AddCreatedByToForumThreads: migrated (0.0061s) ==============
== 20120502192121 AddLastPostUserIdToForumThreads: migrating ==================
-- add_column(:forum_threads, :last_post_user_id, :integer)
-> 0.0004s
-- execute("update forum_threads t\n set last_post_user_id = (select user_id from posts where forum_thread_id = t.Id order by post_number desc limit 1)")
-> 0.0003s
-- change_column(:forum_threads, :last_post_user_id, :integer, {:null=>false})
-> 0.0004s
== 20120502192121 AddLastPostUserIdToForumThreads: migrated (0.0012s) =========
== 20120503205521 AddSiteIdToUsers: migrating =================================
-- add_column(:users, :site_id, :integer)
-> 0.0004s
-- add_column(:users, :bio, :text)
-> 0.0002s
-- add_index(:users, :site_id)
-> 0.0140s
-- execute("UPDATE users SET site_id = 1")
-> 0.0004s
== 20120503205521 AddSiteIdToUsers: migrated (0.0152s) ========================
== 20120507144132 CreateExpressions: migrating ================================
-- create_table(:expressions, {:id=>false, :force=>true})
-> 0.0015s
-- add_index(:expressions, [:parent_id, :parent_type, :expression_type_id, :user_id], {:unique=>true, :name=>"expressions_pk"})
-> 0.0116s
== 20120507144132 CreateExpressions: migrated (0.0132s) =======================
== 20120507144222 CreateExpressionTypes: migrating ============================
-- create_table(:expression_types)
-> 0.0176s
-- add_index(:expression_types, [:site_id, :name], {:unique=>true})
-> 0.0083s
== 20120507144222 CreateExpressionTypes: migrated (0.0260s) ===================
== 20120514144549 AddReplyCountToPosts: migrating =============================
-- add_column(:posts, :reply_count, :integer, {:null=>false, :default=>0})
-> 0.0518s
-- execute("UPDATE posts\n SET reply_count = (SELECT count(*) FROM posts AS p2 WHERE p2.reply_to_post_number = posts.post_number)")
-> 0.0005s
== 20120514144549 AddReplyCountToPosts: migrated (0.0524s) ====================
== 20120514173920 AddFlagToExpressionTypes: migrating =========================
-- add_column(:expression_types, :flag, :boolean, {:default=>false})
-> 0.0230s
== 20120514173920 AddFlagToExpressionTypes: migrated (0.0231s) ================
== 20120514204934 AddDescriptionToExpressionTypes: migrating ==================
-- add_column(:expression_types, :description, :text, {:null=>true})
-> 0.0102s
== 20120514204934 AddDescriptionToExpressionTypes: migrated (0.0102s) =========
== 20120517200130 AddQuotelessToPost: migrating ===============================
-- add_column(:posts, :quoteless, :boolean, {:default=>false})
-> 0.0183s
== 20120517200130 AddQuotelessToPost: migrated (0.0184s) ======================
== 20120518200115 CreateReadPosts: migrating ==================================
-- create_table(:read_posts, {:id=>false})
-> 0.0007s
-- add_index(:read_posts, [:forum_thread_id, :user_id, :page], {:unique=>true})
-> 0.0045s
== 20120518200115 CreateReadPosts: migrated (0.0053s) =========================
== 20120519182212 CreateLastReadPosts: migrating ==============================
-- create_table(:last_read_posts)
-> 0.0039s
-- add_index(:last_read_posts, [:user_id, :forum_thread_id], {:unique=>true})
-> 0.0039s
== 20120519182212 CreateLastReadPosts: migrated (0.0079s) =====================
== 20120523180723 CreateViews: migrating ======================================
-- create_table(:views, {:id=>false})
-> 0.0008s
-- add_index(:views, [:parent_id, :parent_type])
-> 0.0039s
-- add_index(:views, [:parent_id, :parent_type, :ip, :viewed_at], {:unique=>true, :name=>"unique_views"})
-> 0.0040s
== 20120523180723 CreateViews: migrated (0.0089s) =============================
== 20120523184307 AddRepliesToForumThreads: migrating =========================
-- add_column(:forum_threads, :reply_count, :integer, {:default=>0, :null=>false})
-> 0.0061s
-- execute("UPDATE forum_threads SET reply_count = (SELECT COUNT(*) FROM posts WHERE posts.reply_to_post_number IS NOT NULL AND posts.forum_thread_id = forum_threads.id)")
-> 0.0005s
== 20120523184307 AddRepliesToForumThreads: migrated (0.0068s) ================
== 20120523201329 AddFeaturedToForumThreads: migrating ========================
-- add_column(:forum_threads, :featured_user1_id, :integer, {:null=>true})
-> 0.0004s
-- add_column(:forum_threads, :featured_user2_id, :integer, {:null=>true})
-> 0.0002s
-- add_column(:forum_threads, :featured_user3_id, :integer, {:null=>true})
-> 0.0002s
== 20120523201329 AddFeaturedToForumThreads: migrated (0.0010s) ===============
== 20120525194845 AddAvgTimeToForumThreads: migrating =========================
-- add_column(:forum_threads, :avg_time, :integer)
-> 0.0004s
-- execute("update forum_threads SET avg_time = abs(random() * 1200)")
-> 0.0004s
== 20120525194845 AddAvgTimeToForumThreads: migrated (0.0009s) ================
== 20120529175956 CreateUploads: migrating ====================================
-- create_table(:uploads)
-> 0.0117s
-- add_index(:uploads, :forum_thread_id)
-> 0.0040s
-- add_index(:uploads, :user_id)
-> 0.0033s
== 20120529175956 CreateUploads: migrated (0.0191s) ===========================
== 20120529202707 CreateStars: migrating ======================================
-- create_table(:stars, {:id=>false})
-> 0.0009s
-- add_index(:stars, [:parent_id, :parent_type, :user_id])
-> 0.0040s
== 20120529202707 CreateStars: migrated (0.0050s) =============================
== 20120530150726 CreateForumThreadUser: migrating ============================
-- create_table(:forum_thread_users, {:id=>false})
-> 0.0016s
-- execute("DELETE FROM read_posts")
-> 0.0003s
-- add_index(:forum_thread_users, [:forum_thread_id, :user_id], {:unique=>true})
-> 0.0037s
-- drop_table(:stars)
-> 0.0004s
-- drop_table(:last_read_posts)
-> 0.0005s
== 20120530150726 CreateForumThreadUser: migrated (0.0066s) ===================
== 20120530160745 MigratePosted: migrating ====================================
== 20120530160745 MigratePosted: migrated (0.0000s) ===========================
== 20120530200724 AddIndexToForumThreads: migrating ===========================
-- add_index(:forum_threads, :last_posted_at)
-> 0.0039s
== 20120530200724 AddIndexToForumThreads: migrated (0.0039s) ==================
== 20120530212912 CreateForumThreadLinks: migrating ===========================
-- create_table(:forum_thread_links)
-> 0.0062s
-- add_index(:forum_thread_links, :forum_thread_id)
-> 0.0037s
== 20120530212912 CreateForumThreadLinks: migrated (0.0100s) ==================
== 20120614190726 AddTagsToForumThreads: migrating ============================
-- add_column(:forum_threads, :tag, :string, {:null=>true, :limit=>25})
-> 0.0004s
== 20120614190726 AddTagsToForumThreads: migrated (0.0004s) ===================
== 20120614202024 AddQuoteCountToPosts: migrating =============================
-- add_column(:posts, :quote_count, :integer, {:default=>0, :null=>false})
-> 0.0127s
-- execute("UPDATE posts SET quote_count = 1 WHERE quoteless = 'f'")
-> 0.0003s
-- remove_column(:posts, :quoteless)
-> 0.0003s
== 20120614202024 AddQuoteCountToPosts: migrated (0.0134s) ====================
== 20120615180517 CreateBookmarks: migrating ==================================
-- create_table(:bookmarks)
-> 0.0039s
-- add_index(:bookmarks, [:user_id, :post_id], {:unique=>true})
-> 0.0037s
== 20120615180517 CreateBookmarks: migrated (0.0076s) =========================
== 20120618152946 AddReplyBelowToPosts: migrating =============================
-- add_column(:posts, :reply_below_post_number, :integer, {:null=>true})
-> 0.0003s
== 20120618152946 AddReplyBelowToPosts: migrated (0.0004s) ====================
== 20120618212349 CreatePostTimings: migrating ================================
-- create_table(:post_timings)
-> 0.0085s
-- add_index(:post_timings, [:thread_id, :post_number])
-> 0.0035s
-- add_index(:post_timings, [:thread_id, :post_number, :user_id], {:unique=>true})
-> 0.0034s
== 20120618212349 CreatePostTimings: migrated (0.0155s) =======================
== 20120618214856 CreateMessageBus: migrating =================================
-- create_table(:message_bus)
-> 0.0071s
-- add_index(:message_bus, [:created_at])
-> 0.0035s
== 20120618214856 CreateMessageBus: migrated (0.0107s) ========================
== 20120619150807 FixPostTimings: migrating ===================================
-- remove_index(:post_timings, [:thread_id, :post_number])
-> 0.0009s
-- remove_index(:post_timings, [:thread_id, :post_number, :user_id])
-> 0.0010s
-- rename_column(:post_timings, :thread_id, :forum_thread_id)
-> 0.0008s
-- add_index(:post_timings, [:forum_thread_id, :post_number], {:name=>"post_timings_summary"})
-> 0.0033s
-- add_index(:post_timings, [:forum_thread_id, :post_number, :user_id], {:unique=>true, :name=>"post_timings_unique"})
-> 0.0032s
== 20120619150807 FixPostTimings: migrated (0.0093s) ==========================
== 20120619153349 DropReadPosts: migrating ====================================
-- drop_table(:read_posts)
-> 0.0003s
== 20120619153349 DropReadPosts: migrated (0.0004s) ===========================
== 20120619172714 AddPostNumberToBookmarks: migrating =========================
-- drop_table(:bookmarks)
-> 0.0005s
-- create_table(:bookmarks)
-> 0.0034s
-- add_index(:bookmarks, [:user_id, :forum_thread_id, :post_number], {:unique=>true})
-> 0.0036s
== 20120619172714 AddPostNumberToBookmarks: migrated (0.0076s) ================
== 20120621155351 AddSeenPostCountToForumThreadUsers: migrating ===============
-- remove_column(:post_timings, :id)
-> 0.0004s
-- remove_column(:forum_thread_users, :created_at)
-> 0.0002s
-- remove_column(:forum_thread_users, :updated_at)
-> 0.0002s
-- add_column(:forum_thread_users, :seen_post_count, :integer)
-> 0.0002s
== 20120621155351 AddSeenPostCountToForumThreadUsers: migrated (0.0012s) ======
== 20120621190310 AddDeletedAtToForumThreads: migrating =======================
-- add_column(:forum_threads, :deleted_at, :datetime)
-> 0.0003s
== 20120621190310 AddDeletedAtToForumThreads: migrated (0.0003s) ==============
== 20120622200242 CreateNotifications: migrating ==============================
-- create_table(:notifications)
-> 0.0063s
-- add_index(:notifications, [:user_id, :created_at])
-> 0.0034s
== 20120622200242 CreateNotifications: migrated (0.0099s) =====================
== 20120625145714 AddSeenNotificationIdToUsers: migrating =====================
-- execute("TRUNCATE TABLE notifications")
-> 0.0064s
-- add_column(:users, :seen_notificaiton_id, :integer, {:default=>0, :null=>false})
-> 0.0099s
-- add_column(:notifications, :forum_thread_id, :integer, {:null=>true})
-> 0.0002s
-- add_column(:notifications, :post_number, :integer, {:null=>true})
-> 0.0002s
== 20120625145714 AddSeenNotificationIdToUsers: migrated (0.0168s) ============
== 20120625162318 AddDeletedAtToPosts: migrating ==============================
-- add_column(:posts, :deleted_at, :datetime)
-> 0.0004s
== 20120625162318 AddDeletedAtToPosts: migrated (0.0004s) =====================
== 20120625174544 AddHighestPostNumberToForumThreads: migrating ===============
-- add_column(:forum_threads, :highest_post_number, :integer, {:default=>0, :null=>false})
-> 0.0077s
-- execute("UPDATE forum_threads SET highest_post_number = (SELECT MAX(post_number) FROM posts WHERE posts.forum_thread_id = forum_threads.id)")
-> 0.0008s
== 20120625174544 AddHighestPostNumberToForumThreads: migrated (0.0086s) ======
== 20120625195326 AddImageUrlToForumThreads: migrating ========================
-- add_column(:forum_threads, :image_url, :string)
-> 0.0003s
== 20120625195326 AddImageUrlToForumThreads: migrated (0.0004s) ===============
== 20120629143908 RenameExpressionTypeId: migrating ===========================
-- add_column(:expression_types, :expression_index, :integer)
-> 0.0003s
-- execute("UPDATE expression_types SET expression_index = id")
-> 0.0002s
-- remove_column(:expression_types, :id)
-> 0.0005s
-- add_index(:expression_types, [:site_id, :expression_index], {:unique=>true})
-> 0.0082s
== 20120629143908 RenameExpressionTypeId: migrated (0.0094s) ==================
== 20120629150253 DenormalizeExpressions: migrating ===========================
-- add_column(:posts, :expression1_count, :integer, {:null=>false, :default=>0})
-> 0.0115s
-- add_column(:posts, :expression2_count, :integer, {:null=>false, :default=>0})
-> 0.0121s
-- add_column(:posts, :expression3_count, :integer, {:null=>false, :default=>0})
-> 0.0124s
-- add_column(:posts, :expression4_count, :integer, {:null=>false, :default=>0})
-> 0.0118s
-- add_column(:posts, :expression5_count, :integer, {:null=>false, :default=>0})
-> 0.0121s
-- add_column(:forum_threads, :expression1_count, :integer, {:null=>false, :default=>0})
-> 0.0087s
-- add_column(:forum_threads, :expression2_count, :integer, {:null=>false, :default=>0})
-> 0.0088s
-- add_column(:forum_threads, :expression3_count, :integer, {:null=>false, :default=>0})
-> 0.0155s
-- add_column(:forum_threads, :expression4_count, :integer, {:null=>false, :default=>0})
-> 0.0123s
-- add_column(:forum_threads, :expression5_count, :integer, {:null=>false, :default=>0})
-> 0.0079s
-- execute("update posts set expression1_count = (select count(*) from expressions where parent_id = posts.id and expression_type_id = 1)")
-> 0.0005s
-- execute("update forum_threads set expression1_count = (select sum(expression1_count) from posts where forum_thread_id = forum_threads.id)")
-> 0.0004s
-- execute("update posts set expression2_count = (select count(*) from expressions where parent_id = posts.id and expression_type_id = 2)")
-> 0.0002s
-- execute("update forum_threads set expression2_count = (select sum(expression2_count) from posts where forum_thread_id = forum_threads.id)")
-> 0.0002s
-- execute("update posts set expression3_count = (select count(*) from expressions where parent_id = posts.id and expression_type_id = 3)")
-> 0.0002s
-- execute("update forum_threads set expression3_count = (select sum(expression3_count) from posts where forum_thread_id = forum_threads.id)")
-> 0.0002s
-- execute("update posts set expression4_count = (select count(*) from expressions where parent_id = posts.id and expression_type_id = 4)")
-> 0.0002s
-- execute("update forum_threads set expression4_count = (select sum(expression4_count) from posts where forum_thread_id = forum_threads.id)")
-> 0.0002s
-- execute("update posts set expression5_count = (select count(*) from expressions where parent_id = posts.id and expression_type_id = 5)")
-> 0.0002s
-- execute("update forum_threads set expression5_count = (select sum(expression5_count) from posts where forum_thread_id = forum_threads.id)")
-> 0.0003s
== 20120629150253 DenormalizeExpressions: migrated (0.1164s) ==================
== 20120629151243 MakeExpressionsLessGeneric: migrating =======================
-- rename_column(:expressions, :parent_id, :post_id)
-> 0.0012s
-- rename_column(:expressions, :expression_type_id, :expression_index)
-> 0.0011s
-- remove_column(:expressions, :parent_type)
-> 0.0002s
-- add_index(:expressions, [:post_id, :expression_index, :user_id], {:unique=>true, :name=>"unique_by_user"})
-> 0.0035s
== 20120629151243 MakeExpressionsLessGeneric: migrated (0.0062s) ==============
== 20120629182637 CreateIncomingLinks: migrating ==============================
-- create_table(:incoming_links)
-> 0.0061s
-- add_index(:incoming_links, [:site_id, :forum_thread_id, :post_number], {:name=>"incoming_index"})
-> 0.0033s
== 20120629182637 CreateIncomingLinks: migrated (0.0095s) =====================
== 20120702211427 CreateReplies: migrating ====================================
-- create_table(:post_replies, {:id=>false})
-> 0.0007s
-- add_index(:post_replies, [:post_id, :reply_id], {:unique=>true})
-> 0.0033s
-- execute("INSERT INTO post_replies (post_id, reply_id, created_at, updated_at)\n SELECT p2.id, p.id, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP\n FROM posts AS p\n INNER JOIN posts AS p2 on p2.post_number = p.reply_to_post_number AND p2.forum_thread_id = P.forum_thread_id\n WHERE p.forum_thread_id IS NOT NULL")
-> 0.0009s
== 20120702211427 CreateReplies: migrated (0.0051s) ===========================
== 20120703184734 AddReflectionToForumThreadLinks: migrating ==================
-- add_column(:forum_thread_links, :reflection, :boolean, {:default=>false})
-> 0.0081s
-- change_column(:forum_thread_links, :post_id, :integer, {:null=>true})
-> 0.0003s
== 20120703184734 AddReflectionToForumThreadLinks: migrated (0.0085s) =========
== 20120703201312 AddIncomingLinkCountToPosts: migrating ======================
-- add_column(:posts, :incoming_link_count, :integer, {:default=>0, :null=>false})
-> 0.0120s
== 20120703201312 AddIncomingLinkCountToPosts: migrated (0.0121s) =============
== 20120703203623 AddIncomingLinkCountToForumThreads: migrating ===============
-- add_column(:forum_threads, :incoming_link_count, :integer, {:default=>0, :null=>false})
-> 0.0088s
== 20120703203623 AddIncomingLinkCountToForumThreads: migrated (0.0089s) ======
== 20120703210004 AddBookmarkCountToPosts: migrating ==========================
-- add_column(:posts, :bookmark_count, :integer, {:default=>0, :null=>false})
-> 0.0169s
-- add_column(:forum_threads, :bookmark_count, :integer, {:default=>0, :null=>false})
-> 0.0076s
-- add_column(:forum_threads, :star_count, :integer, {:default=>0, :null=>false})
-> 0.0075s
-- execute("UPDATE posts SET bookmark_count = (SELECT COUNT(*)\n FROM bookmarks\n WHERE post_number = posts.post_number AND forum_thread_id = posts.forum_thread_id)")
-> 0.0005s
-- execute("UPDATE forum_threads SET bookmark_count = (SELECT COUNT(*)\n FROM bookmarks\n WHERE forum_thread_id = forum_threads.id)")
-> 0.0003s
-- execute("UPDATE forum_threads SET star_count = (SELECT COUNT(*)\n FROM forum_thread_users\n WHERE forum_thread_id = forum_threads.id AND starred = true)")
-> 0.0003s
== 20120703210004 AddBookmarkCountToPosts: migrated (0.0332s) =================
== 20120704160659 AddAvgTimeToPosts: migrating ================================
-- add_column(:posts, :avg_time, :integer, {:null=>true})
-> 0.0004s
-- add_column(:posts, :score, :float, {:null=>true})
-> 0.0002s
== 20120704160659 AddAvgTimeToPosts: migrated (0.0007s) =======================
== 20120704201743 AddViewCountToPosts: migrating ==============================
-- add_column(:posts, :views, :integer, {:default=>0, :null=>false})
-> 0.0134s
-- execute("UPDATE posts SET views =\n (SELECT COUNT(*) FROM post_timings WHERE forum_thread_id = posts.forum_thread_id AND post_number = posts.post_number)")
-> 0.0005s
== 20120704201743 AddViewCountToPosts: migrated (0.0139s) =====================
== 20120705181724 AddUserToVersions: migrating ================================
-- execute("UPDATE versions SET user_type = 'User', user_id = posts.user_id\n FROM posts\n WHERE posts.id = versions.versioned_id")
-> 0.0007s
== 20120705181724 AddUserToVersions: migrated (0.0007s) =======================
== 20120708210305 AddLastPostedAtToUsers: migrating ===========================
-- add_column(:users, :last_posted_at, :datetime, {:null=>true})
-> 0.0003s
-- add_index(:users, :last_posted_at)
-> 0.0035s
-- execute("UPDATE users\n SET last_posted_at = (SELECT MAX(posts.created_at)\n FROM posts\n WHERE posts.user_id = users.id)")
-> 0.0004s
== 20120708210305 AddLastPostedAtToUsers: migrated (0.0043s) ==================
== 20120712150500 CreateCategories: migrating =================================
-- create_table(:categories)
-> 0.0041s
-- add_index(:categories, :name, {:unique=>true})
-> 0.0031s
-- add_index(:categories, :forum_thread_count)
-> 0.0031s
-- execute("INSERT INTO categories (name, forum_thread_count, created_at, updated_At)\n SELECT tag, count(*), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP from forum_threads\n WHERE tag IS NOT NULL AND tag <> 'null'\n GROUP BY tag")
-> 0.0005s
== 20120712150500 CreateCategories: migrated (0.0110s) ========================
== 20120712151934 AddCategoryIdToForumThreads: migrating ======================
-- add_column(:forum_threads, :category_id, :integer)
-> 0.0003s
-- execute("UPDATE forum_threads SET category_id =\n (SELECT id\n FROM categories\n WHERE name = forum_threads.tag)")
-> 0.0004s
-- remove_column(:forum_threads, :tag)
-> 0.0002s
== 20120712151934 AddCategoryIdToForumThreads: migrated (0.0010s) =============
== 20120713201324 CreateCategoryFeaturedThreads: migrating ====================
-- create_table(:category_featured_threads, {:id=>false})
-> 0.0007s
-- add_index(:category_featured_threads, [:category_id, :forum_thread_id], {:unique=>true, :name=>"cat_featured_threads"})
-> 0.0033s
== 20120713201324 CreateCategoryFeaturedThreads: migrated (0.0040s) ===========
== 20120716020835 CreateSiteSettings: migrating ===============================
-- create_table(:site_settings)
-> 0.0057s
== 20120716020835 CreateSiteSettings: migrated (0.0058s) ======================
== 20120716173544 AddStatsToCategories: migrating =============================
-- add_column(:categories, :posts_year, :integer)
-> 0.0003s
-- add_column(:categories, :posts_month, :integer)
-> 0.0002s
-- add_column(:categories, :posts_week, :integer)
-> 0.0002s
== 20120716173544 AddStatsToCategories: migrated (0.0007s) ====================
== 20120718044955 CreateUserOpenIds: migrating ================================
-- create_table(:user_open_ids)
-> 0.0078s
-- add_index(:user_open_ids, [:url])
-> 0.0032s
== 20120718044955 CreateUserOpenIds: migrated (0.0110s) =======================
== 20120719004636 AddEmailHashedPasswordNameSaltToUsers: migrating ============
-- add_column(:users, :email, :string, {:limit=>256})
-> 0.0003s
-- execute("update users set email= md5(random()::text) || 'domain.com'")
-> 0.0003s
-- change_column(:users, :email, :string, {:limit=>256, :null=>false})
-> 0.0004s
-- add_index(:users, [:email], {:unique=>true})
-> 0.0038s
-- rename_column(:users, :display_username, :name)
-> 0.0017s
-- add_column(:users, :password_hash, :string, {:limit=>64})
-> 0.0002s
-- add_column(:users, :salt, :string, {:limit=>32})
-> 0.0003s
-- add_column(:users, :active, :boolean)
-> 0.0002s
-- add_column(:users, :activation_key, :string, {:limit=>32})
-> 0.0002s
-- add_column(:user_open_ids, :active, :boolean, {:null=>false})
-> 0.0002s
== 20120719004636 AddEmailHashedPasswordNameSaltToUsers: migrated (0.0081s) ===
== 20120720013733 AddUsernameLowerToUsers: migrating ==========================
-- add_column(:users, :username_lower, :string, {:limit=>20})
-> 0.0003s
-- execute("update users set username_lower = lower(username)")
-> 0.0003s
-- add_index(:users, [:username_lower], {:unique=>true})
-> 0.0032s
-- change_column(:users, :username_lower, :string, {:limit=>20, :null=>false})
-> 0.0006s
== 20120720013733 AddUsernameLowerToUsers: migrated (0.0045s) =================
== 20120720044246 AddAuthTokenToUsers: migrating ==============================
-- add_column(:users, :auth_token, :string, {:limit=>32})
-> 0.0004s
-- add_index(:users, [:auth_token])
-> 0.0034s
== 20120720044246 AddAuthTokenToUsers: migrated (0.0038s) =====================
== 20120720162422 AddForumIdToCategories: migrating ===========================
-- add_column(:categories, :forum_id, :integer)
-> 0.0003s
-- execute("UPDATE categories SET forum_id = (SELECT MIN(id) FROM forums)")
-> 0.0007s
-- change_column(:categories, :forum_id, :integer, {:null=>false})
-> 0.0004s
== 20120720162422 AddForumIdToCategories: migrated (0.0014s) ==================
== 20120723051512 AddNotNullsToUserOpenIds: migrating =========================
-- change_column(:user_open_ids, :user_id, :integer, {:null=>false})
-> 0.0004s
-- change_column(:user_open_ids, :email, :string, {:null=>false})
-> 0.0003s
-- change_column(:user_open_ids, :url, :string, {:null=>false})
-> 0.0006s
== 20120723051512 AddNotNullsToUserOpenIds: migrated (0.0014s) ================
== 20120724234502 AddLastSeenAtToUsers: migrating =============================
-- add_column(:users, :last_seen_at, :datetime)
-> 0.0003s
== 20120724234502 AddLastSeenAtToUsers: migrated (0.0003s) ====================
== 20120724234711 AddWebsiteToUsers: migrating ================================
-- add_column(:users, :website, :string)
-> 0.0003s
== 20120724234711 AddWebsiteToUsers: migrated (0.0003s) =======================
== 20120725183347 AddExcerptToCategories: migrating ===========================
-- add_column(:categories, :excerpt, :string, {:limit=>250})
-> 0.0003s
== 20120725183347 AddExcerptToCategories: migrated (0.0003s) ==================
== 20120726201830 AddInvisibleToForumThread: migrating ========================
-- add_column(:forum_threads, :invisible, :boolean, {:default=>false, :null=>false})
-> 0.0080s
-- change_column(:categories, :excerpt, :text, {:null=>true})
-> 0.0026s
== 20120726201830 AddInvisibleToForumThread: migrated (0.0107s) ===============
== 20120726235129 AddUserIdToCategories: migrating ============================
-- add_column(:categories, :user_id, :integer)
-> 0.0003s
-- execute("UPDATE categories SET user_id = 1186")
-> 0.0002s
-- change_column(:categories, :user_id, :integer, {:null=>false})
-> 0.0004s
== 20120726235129 AddUserIdToCategories: migrated (0.0009s) ===================
== 20120727005556 RemoveExcerptFromCategories: migrating ======================
-- remove_column(:categories, :excerpt)
-> 0.0002s
== 20120727005556 RemoveExcerptFromCategories: migrated (0.0003s) =============
== 20120727150428 RenameInvisible: migrating ==================================
-- add_column(:forum_threads, :visible, :boolean, {:default=>true, :null=>false})
-> 0.0084s
-- execute("UPDATE forum_threads SET visible = CASE WHEN invisible THEN false ELSE true END")
-> 0.0002s
-- remove_column(:forum_threads, :invisible)
-> 0.0003s
== 20120727150428 RenameInvisible: migrated (0.0090s) =========================
== 20120727213543 AddThreadCountsToCategories: migrating ======================
-- add_column(:categories, :threads_year, :integer)
-> 0.0003s
-- add_column(:categories, :threads_month, :integer)
-> 0.0002s
-- add_column(:categories, :threads_week, :integer)
-> 0.0002s
-- remove_column(:categories, :posts_year)
-> 0.0002s
-- remove_column(:categories, :posts_month)
-> 0.0002s
-- remove_column(:categories, :posts_week)
-> 0.0002s
== 20120727213543 AddThreadCountsToCategories: migrated (0.0014s) =============
== 20120802151210 AddIconToExpressionTypes: migrating =========================
-- add_column(:expression_types, :icon, :string, {:limit=>20})
-> 0.0003s
-- execute("UPDATE expression_types SET icon = 'heart' WHERE expression_index = 1")
-> 0.0002s
== 20120802151210 AddIconToExpressionTypes: migrated (0.0006s) ================
== 20120803191426 AddAdminFlagToUsers: migrating ==============================
-- add_column(:users, :admin, :boolean, {:default=>false, :null=>false})
-> 0.0241s
-- add_column(:users, :moderator, :boolean, {:default=>false, :null=>false})
-> 0.0222s
-- execute("UPDATE users SET admin = TRUE where lower(username) in ('eviltrout', 'codinghorror', 'sam', 'hanzo')")
-> 0.0004s
== 20120803191426 AddAdminFlagToUsers: migrated (0.0468s) =====================
== 20120806030641 AddNewPasswordNewSaltEmailTokenToUsers: migrating ===========
-- add_column(:users, :new_salt, :string, {:limit=>32})
-> 0.0004s
-- add_column(:users, :new_password_hash, :string, {:limit=>64})
-> 0.0003s
-- add_column(:users, :email_token, :string, {:limit=>32})
-> 0.0002s
-- remove_column(:users, :activation_key)
-> 0.0002s
== 20120806030641 AddNewPasswordNewSaltEmailTokenToUsers: migrated (0.0014s) ==
== 20120806062617 RemoveNewPasswordStuffFromUser: migrating ===================
-- remove_column(:users, :new_password_hash)
-> 0.0002s
-- remove_column(:users, :new_salt)
-> 0.0002s
== 20120806062617 RemoveNewPasswordStuffFromUser: migrated (0.0005s) ==========
== 20120807223020 CreateActions: migrating ====================================
-- create_table(:actions)
-> 0.0044s
-- add_index(:actions, [:user_id, :action_type])
-> 0.0035s
-- add_index(:actions, [:acting_user_id])
-> 0.0034s
== 20120807223020 CreateActions: migrated (0.0114s) ===========================
== 20120809020415 RemoveSiteId: migrating =====================================
-- drop_table("sites")
-> 0.0005s
-- remove_index("incoming_links", {:name=>"incoming_index"})
-> 0.0009s
-- add_index("incoming_links", ["forum_thread_id", "post_number"], {:name=>"incoming_index"})
-> 0.0035s
-- remove_column("incoming_links", "site_id")
-> 0.0002s
-- remove_index("users", {:name=>"index_users_on_site_id"})
-> 0.0009s
-- remove_column("users", "site_id")
-> 0.0002s
-- remove_index("expression_types", {:name=>"index_expression_types_on_site_id_and_expression_index"})
-> 0.0008s
-- remove_index("expression_types", {:name=>"index_expression_types_on_site_id_and_name"})
-> 0.0008s
-- remove_column("expression_types", "site_id")
-> 0.0002s
-- add_index("expression_types", ["expression_index"], {:unique=>true})
-> 0.0033s
-- add_index("expression_types", ["name"], {:unique=>true})
-> 0.0033s
-- drop_table("forums")
-> 0.0004s
== 20120809020415 RemoveSiteId: migrated (0.0155s) ============================
== 20120809030647 RemoveForumId: migrating ====================================
-- remove_column("forum_threads", "forum_id")
-> 0.0003s
-- remove_column("categories", "forum_id")
-> 0.0002s
== 20120809030647 RemoveForumId: migrated (0.0005s) ===========================
== 20120809053414 CorrectIndexingOnPosts: migrating ===========================
-- execute("update posts pp\nset post_number = c.real_number\nfrom\n(\n\tselect p1.id, count(*) real_number from posts p1\n\tjoin posts p2 on p1.forum_thread_id = p2.forum_thread_id\n\twhere p2.id <= p1.id and p1.forum_thread_id = p2.forum_thread_id\n group by p1.id\n) as c\nwhere pp.id = c.id and pp.post_number <> c.real_number")
-> 0.0005s
-- remove_index("posts", ["forum_thread_id", "post_number"])
-> 0.0009s
-- add_index("posts", ["forum_thread_id", "post_number"], {:unique=>true})
-> 0.0038s
== 20120809053414 CorrectIndexingOnPosts: migrated (0.0053s) ==================
== 20120809154750 RemoveIndexForNow: migrating ================================
-- remove_index("posts", ["forum_thread_id", "post_number"])
-> 0.0009s
-- add_index("posts", ["forum_thread_id", "post_number"], {:unique=>false})
-> 0.0034s
== 20120809154750 RemoveIndexForNow: migrated (0.0044s) =======================
== 20120809174649 CreatePostActions: migrating ================================
-- create_table(:post_actions)
-> 0.0037s
-- add_index(:post_actions, ["post_id"])
-> 0.0034s
-- execute("create unique index idx_unique_actions on\n post_actions(user_id, post_action_type_id, post_id) where deleted_at is null")
-> 0.0024s
== 20120809174649 CreatePostActions: migrated (0.0096s) =======================
== 20120809175110 CreatePostActionTypes: migrating ============================
-- create_table(:post_action_types, {:id=>false})
-> 0.0077s
== 20120809175110 CreatePostActionTypes: migrated (0.0077s) ===================
== 20120809201855 MigrateBookmarksToPostActions: migrating ====================
-- drop_table("bookmarks")
-> 0.0005s
== 20120809201855 MigrateBookmarksToPostActions: migrated (0.0006s) ===========
== 20120810064839 RenameActionsToUserActions: migrating =======================
-- rename_table("actions", "user_actions")
-> 0.0031s
== 20120810064839 RenameActionsToUserActions: migrated (0.0032s) ==============
== 20120812235417 RetireExpressions: migrating ================================
-- execute("insert into post_actions (post_action_type_id, user_id, post_id, created_at, updated_at)\nselect\n\tcase\n\t when expression_index=1 then 3\n\t when expression_index=2 then 4\n\t when expression_index=3 then 2\n\tend\n\n\t, user_id, post_id, created_at, updated_at from expressions")
-> 0.0004s
-- drop_table("expressions")
-> 0.0003s
-- drop_table("expression_types")
-> 0.0005s
== 20120812235417 RetireExpressions: migrated (0.0014s) =======================
== 20120813004347 RenameExpressionColumnsInForumThread: migrating =============
-- rename_column("forum_threads", "expression1_count", "off_topic_count")
-> 0.0012s
-- rename_column("forum_threads", "expression2_count", "offensive_count")
-> 0.0010s
-- rename_column("forum_threads", "expression3_count", "like_count")
-> 0.0010s
-- remove_column("forum_threads", "expression4_count")
-> 0.0003s
-- remove_column("forum_threads", "expression5_count")
-> 0.0002s
== 20120813004347 RenameExpressionColumnsInForumThread: migrated (0.0038s) ====
== 20120813042912 RenameExpressionColumnsInPosts: migrating ===================
-- rename_column("posts", "expression1_count", "off_topic_count")
-> 0.0016s
-- rename_column("posts", "expression2_count", "offensive_count")
-> 0.0016s
-- rename_column("posts", "expression3_count", "like_count")
-> 0.0015s
-- remove_column("posts", "expression4_count")
-> 0.0003s
-- remove_column("posts", "expression5_count")
-> 0.0002s
== 20120813042912 RenameExpressionColumnsInPosts: migrated (0.0052s) ==========
== 20120813201426 CreateForumThreadLinkClicks: migrating ======================
-- create_table(:forum_thread_link_clicks)
-> 0.0043s
-- add_column(:forum_thread_links, :clicks, :integer, {:default=>0, :null=>false})
-> 0.0081s
-- add_index(:forum_thread_link_clicks, :forum_thread_link_id, {:name=>:by_link})
-> 0.0035s
== 20120813201426 CreateForumThreadLinkClicks: migrated (0.0159s) =============
== 20120815004411 AddUniqueIndexToForumThreadLinks: migrating =================
-- execute("DELETE FROM forum_thread_links USING forum_thread_links ftl2\n WHERE ftl2.forum_thread_id = forum_thread_links.forum_thread_id\n AND ftl2.post_id = forum_thread_links.post_id\n AND ftl2.url = forum_thread_links.url\n AND ftl2.id < forum_thread_links.id")
-> 0.0004s
-- add_index(:forum_thread_links, [:forum_thread_id, :post_id, :url], {:unique=>true, :name=>"unique_post_links"})
-> 0.0035s
== 20120815004411 AddUniqueIndexToForumThreadLinks: migrated (0.0040s) ========
== 20120815180106 AddPostTypeToPosts: migrating ===============================
-- add_column(:posts, :post_type, :integer, {:default=>1, :null=>false})
-> 0.0126s
== 20120815180106 AddPostTypeToPosts: migrated (0.0126s) ======================
== 20120815204733 AddModeratorPostsCountToForumThreads: migrating =============
-- add_column(:forum_threads, :moderator_posts_count, :integer, {:default=>0, :null=>false})
-> 0.0089s
-- execute("UPDATE forum_threads\n SET moderator_posts_count = (SELECT COUNT(*)\n FROM posts WHERE posts.forum_thread_id = forum_threads.id\n AND posts.post_type = 2)")
-> 0.0005s
== 20120815204733 AddModeratorPostsCountToForumThreads: migrated (0.0095s) ====
== 20120816050526 AddUniqueConstraintToUserActions: migrating =================
-- add_index(:user_actions, ["action_type", "user_id", "target_forum_thread_id", "target_post_id", "acting_user_id"], {:name=>"idx_unique_rows", :unique=>true})
-> 0.0037s
== 20120816050526 AddUniqueConstraintToUserActions: migrated (0.0038s) ========
== 20120816205537 AddForumThreadStates: migrating =============================
-- add_column(:forum_threads, :closed, :boolean, {:default=>false, :null=>false})
-> 0.0084s
-- add_column(:forum_threads, :sticky, :boolean, {:default=>false, :null=>false})
-> 0.0133s
-- add_column(:forum_threads, :archived, :boolean, {:default=>false, :null=>false})
-> 0.0117s
== 20120816205537 AddForumThreadStates: migrated (0.0335s) ====================
== 20120816205538 AddStarredAtToForumThreadUser: migrating ====================
-- add_column(:forum_thread_users, :starred_at, :datetime)
-> 0.0003s
-- execute("alter table forum_thread_users add constraint test_starred_at check(starred = false or starred_at is not null)")
-> 0.0006s
== 20120816205538 AddStarredAtToForumThreadUser: migrated (0.0028s) ===========
== 20120820191804 AddSearchIndices: migrating =================================
-- execute("CREATE INDEX idx_search_user ON users USING GIN(to_tsvector('english', username))")
-> 0.0027s
-- execute("CREATE INDEX idx_search_thread ON forum_threads USING GIN(to_tsvector('english', title))")
-> 0.0004s
== 20120820191804 AddSearchIndices: migrated (0.0032s) ========================
== 20120821191616 AddBumpedAtToForumThreads: migrating ========================
-- add_column(:forum_threads, :bumped_at, :datetime)
-> 0.0003s
-- execute("UPDATE forum_threads SET bumped_at = last_posted_at")
-> 0.0002s
-- change_column(:forum_threads, :bumped_at, :datetime, {:null=>false})
-> 0.0004s
-- remove_index(:forum_threads, :last_posted_at)
-> 0.0009s
-- add_index(:forum_threads, :bumped_at, {:order=>{:bumped_at=>:desc}})
-> 0.0036s
== 20120821191616 AddBumpedAtToForumThreads: migrated (0.0055s) ===============
== 20120823205956 AddSlugToCategories: migrating ==============================
-- add_column(:categories, :slug, :string)
-> 0.0003s
-- execute("UPDATE categories SET slug = REPLACE(LOWER(name), ' ', '-')")
-> 0.0002s
-- change_column(:categories, :slug, :string, {:null=>false})
-> 0.0004s
== 20120823205956 AddSlugToCategories: migrated (0.0010s) =====================
== 20120824171908 CreateCategoryFeaturedUsers: migrating ======================
-- create_table(:category_featured_users)
-> 0.0038s
-- add_index(:category_featured_users, [:category_id, :user_id], {:unique=>true})
-> 0.0035s
== 20120824171908 CreateCategoryFeaturedUsers: migrated (0.0074s) =============
== 20120828204209 CreateOneboxRenders: migrating ==============================
-- create_table(:onebox_renders)
-> 0.0059s
-- add_index(:onebox_renders, :url, {:unique=>true})
-> 0.0033s
== 20120828204209 CreateOneboxRenders: migrated (0.0093s) =====================
== 20120828204624 CreatePostOneboxRenders: migrating ==========================
-- create_table(:post_onebox_renders, {:id=>false})
-> 0.0007s
-- add_index(:post_onebox_renders, [:post_id, :onebox_render_id], {:unique=>true})
-> 0.0035s
== 20120828204624 CreatePostOneboxRenders: migrated (0.0042s) =================
== 20120830182736 AddPreviewToOneboxRenders: migrating ========================
-- add_column(:onebox_renders, :preview, :text, {:null=>true})
-> 0.0003s
-- execute("DELETE FROM onebox_renders")
-> 0.0002s
-- execute("DELETE FROM post_onebox_renders")
-> 0.0002s
== 20120830182736 AddPreviewToOneboxRenders: migrated (0.0008s) ===============
== 20120910171504 RemoveDescriptionFromSiteSettings: migrating ================
-- remove_column(:site_settings, :description)
-> 0.0002s
== 20120910171504 RemoveDescriptionFromSiteSettings: migrated (0.0003s) =======
== 20120918152319 RenameViewsToReads: migrating ===============================
-- rename_column(:posts, :views, :reads)
-> 0.0016s
== 20120918152319 RenameViewsToReads: migrated (0.0017s) ======================
== 20120918205931 AddSubTagToForumThreads: migrating ==========================
-- add_column(:forum_threads, :sub_tag, :string)
-> 0.0003s
-- add_index(:forum_threads, [:category_id, :sub_tag, :bumped_at])
-> 0.0036s
== 20120918205931 AddSubTagToForumThreads: migrated (0.0040s) =================
== 20120919152846 AddHasBestOfToForumThreads: migrating =======================
-- add_column(:forum_threads, :has_best_of, :boolean, {:default=>false, :null=>false})
-> 0.0110s
-- change_column(:posts, :score, :float)
-> 0.0002s
== 20120919152846 AddHasBestOfToForumThreads: migrated (0.0113s) ==============
== 20120921055428 AddTwitterUserInfo: migrating ===============================
-- create_table(:twitter_user_infos)
-> 0.0060s
-- add_index(:twitter_user_infos, [:twitter_user_id], {:unique=>true})
-> 0.0069s
-- add_index(:twitter_user_infos, [:user_id], {:unique=>true})
-> 0.0033s
== 20120921055428 AddTwitterUserInfo: migrated (0.0164s) ======================
== 20120921155050 CreateArchetypes: migrating =================================
-- create_table(:archetypes)
-> 0.0061s
-- add_index(:archetypes, :name_key, {:unique=>true})
-> 0.0034s
-- execute("INSERT INTO archetypes (name_key, created_at, updated_at) VALUES ('regular', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)")
-> 0.0009s
-- execute("INSERT INTO archetypes (name_key, created_at, updated_at) VALUES ('poll', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)")
-> 0.0002s
-- add_column(:forum_threads, :archetype_id, :integer, {:default=>1, :null=>false})
-> 0.0110s
== 20120921155050 CreateArchetypes: migrated (0.0217s) ========================
== 20120921162512 AddMetaDataToForumThreads: migrating ========================
-- execute("CREATE EXTENSION IF NOT EXISTS hstore")
-> 0.0001s
-- add_column(:forum_threads, :meta_data, :hstore)
-> 0.0003s
== 20120921162512 AddMetaDataToForumThreads: migrated (0.0005s) ===============
== 20120921163606 CreateArchetypeOptions: migrating ===========================
-- create_table(:archetype_options)
-> 0.0063s
-- add_index(:archetype_options, :archetype_id)
-> 0.0035s
-- execute("INSERT INTO archetype_options (archetype_id, key, option_type, created_at, updated_at)\n VALUES (2, 'private_poll', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)")
-> 0.0003s
-- execute("INSERT INTO archetype_options (archetype_id, key, option_type, created_at, updated_at)\n VALUES (2, 'single_vote', 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)")
-> 0.0002s
== 20120921163606 CreateArchetypeOptions: migrated (0.0103s) ==================
== 20120924182000 AddHstoreExtension: migrating ===============================
-- execute("CREATE EXTENSION IF NOT EXISTS hstore")
-> 0.0001s
== 20120924182000 AddHstoreExtension: migrated (0.0002s) ======================
== 20120924182031 AddVoteCountToPosts: migrating ==============================
-- add_column(:forum_threads, :vote_count, :integer, {:default=>0, :null=>false})
-> 0.0116s
-- add_column(:posts, :vote_count, :integer, {:default=>0, :null=>false})
-> 0.0127s
== 20120924182031 AddVoteCountToPosts: migrated (0.0243s) =====================
== 20120925171620 RemoveEnglishFromPostActionTypes: migrating =================
-- rename_column(:post_action_types, :name, :name_key)
-> 0.0008s
-- execute("UPDATE post_action_types SET name_key = regexp_replace(lower(name_key), '[^a-z]', '_')")
-> 0.0002s
-- remove_column(:post_action_types, :long_form)
-> 0.0002s
-- remove_column(:post_action_types, :description)
-> 0.0002s
== 20120925171620 RemoveEnglishFromPostActionTypes: migrated (0.0015s) ========
== 20120925190802 AddSequenceToPostActionTypes: migrating =====================
-- remove_column(:post_action_types, :id)
-> 0.0002s
-- add_column(:post_action_types, :id, :primary_key)
-> 0.0105s
== 20120925190802 AddSequenceToPostActionTypes: migrated (0.0108s) ============
== 20120928170023 AddSortOrderToPosts: migrating ==============================
-- add_column(:posts, :sort_order, :integer)
-> 0.0003s
-- remove_index(:posts, :user_id)
-> 0.0009s
-- execute("UPDATE posts AS p SET sort_order = post_number FROM forum_threads AS ft WHERE ft.id = p.forum_thread_id AND ft.archetype_id = 1")
-> 0.0006s
-- execute("UPDATE posts AS p SET sort_order =\n CASE WHEN post_number = 1 THEN 1\n ELSE 2147483647 - p.vote_count\n END\n FROM forum_threads AS ft\n WHERE ft.id = p.forum_thread_id AND ft.archetype_id = 2")
-> 0.0004s
== 20120928170023 AddSortOrderToPosts: migrated (0.0023s) =====================
== 20121009161116 AddEmailStuffToUsers: migrating =============================
-- add_column(:users, :last_emailed_at, :datetime, {:null=>true})
-> 0.0003s
-- add_column(:users, :email_digests, :boolean, {:null=>false, :default=>true})
-> 0.0167s
== 20121009161116 AddEmailStuffToUsers: migrated (0.0171s) ====================
== 20121011155904 CreateEmailLogs: migrating ==================================
-- create_table(:email_logs)
-> 0.0063s
-- add_index(:email_logs, :created_at, {:order=>{:created_at=>:desc}})
-> 0.0034s
-- add_index(:email_logs, [:user_id, :created_at], {:order=>{:created_at=>:desc}})
-> 0.0033s
== 20121011155904 CreateEmailLogs: migrated (0.0132s) =========================
== 20121017162924 ConvertArchetypes: migrating ================================
-- add_column(:forum_threads, :archetype, :string, {:default=>"regular", :null=>false})
-> 0.0108s
-- execute("UPDATE forum_threads SET archetype = a.name_key FROM archetypes AS a WHERE a.id = forum_threads.archetype_id")
-> 0.0004s
-- remove_column(:forum_threads, :archetype_id)
-> 0.0003s
-- drop_table(:archetypes)
-> 0.0006s
-- drop_table(:archetype_options)
-> 0.0006s
== 20121017162924 ConvertArchetypes: migrated (0.0127s) =======================
== 20121018103721 RenameForumThreadTables: migrating ==========================
-- rename_table("forum_threads", "topics")
-> 0.0033s
-- rename_table("forum_thread_link_clicks", "topic_link_clicks")
-> 0.0022s
-- rename_table("forum_thread_links", "topic_links")
-> 0.0026s
-- rename_table("forum_thread_users", "topic_users")
-> 0.0036s
-- rename_table("category_featured_threads", "category_featured_topics")
-> 0.0027s
-- rename_column("categories", "forum_thread_id", "topic_id")
-> 0.0012s
-- rename_column("categories", "top1_forum_thread_id", "top1_topic_id")
-> 0.0011s
-- rename_column("categories", "top2_forum_thread_id", "top2_topic_id")
-> 0.0013s
-- rename_column("categories", "forum_thread_count", "topic_count")
-> 0.0013s
-- rename_column("categories", "threads_year", "topics_year")
-> 0.0012s
-- rename_column("categories", "threads_month", "topics_month")
-> 0.0012s
-- rename_column("categories", "threads_week", "topics_week")
-> 0.0012s
-- rename_column("category_featured_topics", "forum_thread_id", "topic_id")
-> 0.0009s
-- rename_column("topic_link_clicks", "forum_thread_link_id", "topic_link_id")
-> 0.0009s
-- rename_column("topic_links", "forum_thread_id", "topic_id")
-> 0.0014s
-- rename_column("topic_links", "link_forum_thread_id", "link_topic_id")
-> 0.0012s
-- rename_column("topic_users", "forum_thread_id", "topic_id")
-> 0.0012s
-- rename_column("incoming_links", "forum_thread_id", "topic_id")
-> 0.0010s
-- rename_column("notifications", "forum_thread_id", "topic_id")
-> 0.0010s
-- rename_column("post_timings", "forum_thread_id", "topic_id")
-> 0.0013s
-- rename_column("posts", "forum_thread_id", "topic_id")
-> 0.0015s
-- rename_column("user_actions", "target_forum_thread_id", "target_topic_id")
-> 0.0015s
-- rename_column("uploads", "forum_thread_id", "topic_id")
-> 0.0014s
== 20121018103721 RenameForumThreadTables: migrated (0.0367s) =================
== 20121018133039 CreateTopicAllowedUsers: migrating ==========================
-- create_table(:topic_allowed_users)
-> 0.0039s
-- add_index(:topic_allowed_users, [:topic_id, :user_id], {:unique=>true})
-> 0.0084s
-- add_index(:topic_allowed_users, [:user_id, :topic_id], {:unique=>true})
-> 0.0032s
== 20121018133039 CreateTopicAllowedUsers: migrated (0.0156s) =================
== 20121018182709 FixNotificationData: migrating ==============================
-- execute("UPDATE notifications SET data = replace(data, 'thread_title', 'topic_title')")
-> 0.0003s
== 20121018182709 FixNotificationData: migrated (0.0003s) =====================
== 20121106015500 DropAvatarUrlFromUsers: migrating ===========================
-- remove_column(:users, :avatar_url)
-> 0.0003s
== 20121106015500 DropAvatarUrlFromUsers: migrated (0.0003s) ==================
== 20121108193516 AddPostActionIdToNotifications: migrating ===================
-- add_column(:notifications, :post_action_id, :integer, {:null=>true})
-> 0.0003s
-- add_index(:notifications, :post_action_id)
-> 0.0035s
== 20121108193516 AddPostActionIdToNotifications: migrated (0.0038s) ==========
== 20121109164630 CreateTrustLevels: migrating ================================
-- create_table(:trust_levels)
-> 0.0059s
-- add_column(:users, :trust_level_id, :integer, {:default=>1, :null=>false})
-> 0.0167s
== 20121109164630 CreateTrustLevels: migrated (0.0227s) =======================
== 20121113200844 BioMarkdownSupport: migrating ===============================
-- rename_column(:users, :bio, :bio_raw)
-> 0.0022s
-- add_column(:users, :bio_cooked, :text, {:null=>true})
-> 0.0003s
== 20121113200844 BioMarkdownSupport: migrated (0.0046s) ======================
== 20121113200845 CreateFacebookUserInfos: migrating ==========================
-- create_table(:facebook_user_infos)
-> 0.0061s
-- add_index(:facebook_user_infos, :user_id, {:unique=>true})
-> 0.0036s
-- add_index(:facebook_user_infos, :facebook_user_id, {:unique=>true})
-> 0.0033s
== 20121113200845 CreateFacebookUserInfos: migrated (0.0131s) =================
== 20121115172544 RenameStickyToPinned: migrating =============================
-- rename_column(:topics, :sticky, :pinned)
-> 0.0016s
== 20121115172544 RenameStickyToPinned: migrated (0.0017s) ====================
== 20121116212424 AddMoreEmailSettingsToUser: migrating =======================
-- add_column(:users, :email_private_messages, :boolean, {:default=>true})
-> 0.0167s
-- add_column(:users, :email_mentions, :boolean, {:default=>true})
-> 0.0265s
== 20121116212424 AddMoreEmailSettingsToUser: migrated (0.0433s) ==============
== 20121119190529 AddEmailSettingsToUsers: migrating ==========================
-- add_column(:users, :email_replied, :boolean, {:default=>true})
-> 0.0173s
-- add_column(:users, :email_quoted, :boolean, {:default=>true})
-> 0.0166s
== 20121119190529 AddEmailSettingsToUsers: migrated (0.0339s) =================
== 20121119200843 AddEmailDirectToUsers: migrating ============================
-- add_column(:users, :email_direct, :boolean, {:default=>true, :null=>false})
-> 0.0167s
-- remove_column(:users, :email_mentions)
-> 0.0003s
-- remove_column(:users, :email_replied)
-> 0.0002s
-- remove_column(:users, :email_quoted)
-> 0.0002s
== 20121119200843 AddEmailDirectToUsers: migrated (0.0176s) ===================
== 20121121202035 CreateInvites: migrating ====================================
-- create_table(:invites)
-> 0.0062s
-- add_index(:invites, :invite_key, {:unique=>true})
-> 0.0035s
-- add_index(:invites, [:email, :invited_by_id], {:unique=>true})
-> 0.0033s
== 20121121202035 CreateInvites: migrated (0.0131s) ===========================
== 20121121205215 CreateTopicInvites: migrating ===============================
-- create_table(:topic_invites)
-> 0.0086s
-- add_index(:topic_invites, [:topic_id, :invite_id], {:unique=>true})
-> 0.0037s
-- add_index(:topic_invites, :invite_id)
-> 0.0064s
== 20121121205215 CreateTopicInvites: migrated (0.0187s) ======================
== 20121122033316 AddMutedAtToTopicUser: migrating ============================
-- add_column(:topic_users, :muted_at, :datetime)
-> 0.0003s
-- change_column(:topic_users, :last_read_post_number, :integer, {:null=>true})
-> 0.0004s
-- change_column_default(:topic_users, :last_read_post_number, nil)
-> 0.0008s
== 20121122033316 AddMutedAtToTopicUser: migrated (0.0016s) ===================
== 20121123054127 MakePostNumberDistinct: migrating ===========================
== 20121123054127 MakePostNumberDistinct: migrated (0.0007s) ==================
== 20121123063630 CreateUserVisits: migrating =================================
-- create_table(:user_visits)
-> 0.0032s
-- add_index(:user_visits, [:user_id, :visited_at], {:unique=>true})
-> 0.0033s
== 20121123063630 CreateUserVisits: migrated (0.0067s) ========================
== 20121129160035 CreateEmailTokens: migrating ================================
-- create_table(:email_tokens)
-> 0.0064s
-- add_index(:email_tokens, :token, {:unique=>true})
-> 0.0032s
== 20121129160035 CreateEmailTokens: migrated (0.0097s) =======================
== 20121129184948 RemoveEmailTokenFromUsers: migrating ========================
-- execute("INSERT INTO email_tokens (user_id, email, token, created_at, updated_at)\n SELECT id, email, email_token, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP\n FROM users WHERE email_token IS NOT NULL")
-> 0.0005s
-- remove_column(:users, :email_token)
-> 0.0002s
== 20121129184948 RemoveEmailTokenFromUsers: migrated (0.0008s) ===============
== 20121130010400 CreateDrafts: migrating =====================================
-- create_table(:drafts)
-> 0.0060s
-- add_index(:drafts, [:user_id, :draft_key])
-> 0.0034s
== 20121130010400 CreateDrafts: migrated (0.0094s) ============================
== 20121130191818 AddLinkPostIdToTopicLinks: migrating ========================
-- add_column(:topic_links, :link_post_id, :integer)
-> 0.0003s
== 20121130191818 AddLinkPostIdToTopicLinks: migrated (0.0003s) ===============
== 20121202225421 AddVisitedAtToTopicUser: migrating ==========================
-- add_column(:topic_users, :last_visited_at, :datetime)
-> 0.0003s
-- add_column(:topic_users, :first_visited_at, :datetime)
-> 0.0002s
== 20121202225421 AddVisitedAtToTopicUser: migrated (0.0006s) =================
== 20121203181719 RenameSeenNotificaitonId: migrating =========================
-- rename_column(:users, :seen_notificaiton_id, :seen_notification_id)
-> 0.0023s
== 20121203181719 RenameSeenNotificaitonId: migrated (0.0023s) ================
== 20121204183855 FixLinkPostId: migrating ====================================
== 20121204183855 FixLinkPostId: migrated (0.0151s) ===========================
== 20121204193747 AddAnotherFeaturedUserToTopics: migrating ===================
-- add_column(:topics, :featured_user4_id, :integer, {:null=>true})
-> 0.0004s
== 20121204193747 AddAnotherFeaturedUserToTopics: migrated (0.0004s) ==========
== 20121205162143 AddApprovedToUsers: migrating ===============================
-- add_column(:users, :approved, :boolean, {:null=>false, :default=>false})
-> 0.0225s
-- add_column(:users, :approved_by_id, :integer, {:null=>true})
-> 0.0003s
-- add_column(:users, :approved_at, :timestamp, {:null=>true})
-> 0.0002s
== 20121205162143 AddApprovedToUsers: migrated (0.0231s) ======================
== 20121207000741 AddNotificationsToTopicUsers: migrating =====================
-- add_column(:topic_users, :notifications, :integer, {:default=>2})
-> 0.0061s
-- add_column(:topic_users, :notifications_changed_at, :datetime)
-> 0.0003s
-- add_column(:topic_users, :notifications_reason_id, :integer)
-> 0.0002s
== 20121207000741 AddNotificationsToTopicUsers: migrated (0.0067s) ============
== 20121211233131 CreateSiteCustomizations: migrating =========================
-- create_table(:site_customizations)
-> 0.0059s
-- add_index(:site_customizations, [:key])
-> 0.0034s
== 20121211233131 CreateSiteCustomizations: migrated (0.0094s) ================
== 20121216230719 AddOverrideDefaultStyleToSiteCustomization: migrating =======
-- add_column(:site_customizations, :override_default_style, :boolean, {:default=>false, :null=>false})
-> 0.0079s
-- add_column(:site_customizations, :stylesheet_baked, :text, {:default=>"", :null=>false})
-> 0.0077s
== 20121216230719 AddOverrideDefaultStyleToSiteCustomization: migrated (0.0156s)
== 20121218205642 AddTopicsEnteredToUsers: migrating ==========================
-- add_column(:users, :topics_entered, :integer, {:default=>0, :null=>false})
-> 0.0174s
-- add_column(:users, :posts_read_count, :integer, {:default=>0, :null=>false})
-> 0.0166s
== 20121218205642 AddTopicsEnteredToUsers: migrated (0.0341s) =================
== 20121224072204 AddLastEditorIdToPosts: migrating ===========================
-- add_column(:posts, :last_editor_id, :integer)
-> 0.0003s
== 20121224072204 AddLastEditorIdToPosts: migrated (0.0003s) ==================
== 20121224095139 CreateDraftSequence: migrating ==============================
-- create_table(:draft_sequences)
-> 0.0068s
-- add_index(:draft_sequences, [:user_id, :draft_key], {:unique=>true})
-> 0.0034s
== 20121224095139 CreateDraftSequence: migrated (0.0103s) =====================
== 20121224100650 AddSequenceToDrafts: migrating ==============================
-- add_column(:drafts, :sequence, :integer, {:null=>false, :default=>0})
-> 0.0150s
== 20121224100650 AddSequenceToDrafts: migrated (0.0151s) =====================
== 20121228192219 AddDeletedAtToInvites: migrating ============================
-- add_column(:invites, :deleted_at, :datetime)
-> 0.0003s
== 20121228192219 AddDeletedAtToInvites: migrated (0.0004s) ===================
== 20130107165207 AddDigestAfterDaysToUsers: migrating ========================
-- add_column(:users, :digest_after_days, :integer, {:default=>7, :null=>false})
-> 0.0178s
== 20130107165207 AddDigestAfterDaysToUsers: migrated (0.0179s) ===============
== 20130108195847 AddPreviousVisitAtToUsers: migrating ========================
-- add_column(:users, :previous_visit_at, :timestamp)
-> 0.0004s
== 20130108195847 AddPreviousVisitAtToUsers: migrated (0.0004s) ===============
== 20130115012140 MergeMuteOptionsOnTopicUsers: migrating =====================
-- execute("update topic_users set notifications = 0 where notifications = 3")
-> 0.0004s
-- execute("update topic_users set notifications = 1 where notifications = 2")
-> 0.0001s
-- execute("update topic_users set notifications = 2 where notifications = 1")
-> 0.0002s
-- execute("update topic_users set notifications = 0 where muted_at is not null")
-> 0.0002s
-- rename_column(:topic_users, :notifications, :notification_level)
-> 0.0013s
-- remove_column(:topic_users, :muted_at)
-> 0.0002s
== 20130115012140 MergeMuteOptionsOnTopicUsers: migrated (0.0032s) ============
== 20130115021937 CorrectDefaultOnNotificationLevel: migrating ================
-- change_column(:topic_users, :notification_level, :integer, {:default=>1, :null=>false})
-> 0.0022s
== 20130115021937 CorrectDefaultOnNotificationLevel: migrated (0.0023s) =======
== 20130115043603 OopsUnwatchABoatOfWatchedStuff: migrating ===================
-- execute("update topic_users set notification_level = 1 where notifications_reason_id is null and notification_level = 2")
-> 0.0003s
== 20130115043603 OopsUnwatchABoatOfWatchedStuff: migrated (0.0004s) ==========
== 20130116151829 RemoveSubTagFromTopics: migrating ===========================
-- remove_column(:topics, :sub_tag)
-> 0.0004s
== 20130116151829 RemoveSubTagFromTopics: migrated (0.0005s) ==================
== 20130120222728 FixSearch: migrating ========================================
-- execute("drop index idx_search_thread")
-> 0.0002s
-- execute("drop index idx_search_user")
-> 0.0002s
-- execute("create table posts_search (id integer not null primary key, search_data tsvector)")
-> 0.0056s
-- execute("create table users_search (id integer not null primary key, search_data tsvector)")
-> 0.0050s
-- execute("create table categories_search (id integer not null primary key, search_data tsvector)")
-> 0.0050s
-- execute("create index idx_search_post on posts_search using gin(search_data) ")
-> 0.0004s
-- execute("create index idx_search_user on users_search using gin(search_data) ")
-> 0.0004s
-- execute("create index idx_search_category on categories_search using gin(search_data) ")
-> 0.0003s
== 20130120222728 FixSearch: migrated (0.0174s) ===============================
== 20130121231352 AddTrackingToTopicUsers: migrating ==========================
-- execute("update topic_users set notification_level = 3 where notification_level = 2")
-> 0.0002s
== 20130121231352 AddTrackingToTopicUsers: migrated (0.0002s) =================
== 20130122051134 AddAutoTrackTopicsToUser: migrating =========================
-- add_column(:users, :auto_track_topics, :boolean, {:null=>false, :default=>false})
-> 0.0171s
== 20130122051134 AddAutoTrackTopicsToUser: migrated (0.0171s) ================
== 20130122232825 AddAutoTrackAfterSecondsAndBanningAndDobToUser: migrating ===
-- add_column(:users, :banned_at, :datetime)
-> 0.0004s
-- add_column(:users, :banned_till, :datetime)
-> 0.0002s
-- add_column(:users, :date_of_birth, :date)
-> 0.0002s
-- add_column(:users, :auto_track_topics_after_msecs, :integer)
-> 0.0002s
-- add_column(:users, :views, :integer, {:null=>false, :default=>0})
-> 0.0237s
-- remove_column(:users, :auto_track_topics)
-> 0.0003s
-- add_column(:topic_users, :total_msecs_viewed, :integer, {:null=>false, :default=>0})
-> 0.0045s
-- execute("update topic_users set total_msecs_viewed =\n (\n select coalesce(sum(msecs) ,0)\n from post_timings t\n where topic_users.topic_id = t.topic_id and topic_users.user_id = t.user_id\n )")
-> 0.0004s
== 20130122232825 AddAutoTrackAfterSecondsAndBanningAndDobToUser: migrated (0.0302s)
== 20130123070909 AutoTrackAllTopicsRepliedTo: migrating ======================
-- execute("update topic_users set notification_level = 2, notifications_reason_id = 4\n from posts p\n where\n notification_level = 1 and\n notifications_reason_id is null and\n p.topic_id = topic_users.topic_id and\n p.user_id = topic_users.user_id\n ")
-> 0.0004s
== 20130123070909 AutoTrackAllTopicsRepliedTo: migrated (0.0005s) =============
== 20130125002652 AddHiddenToPosts: migrating =================================
-- add_column(:posts, :hidden, :boolean, {:null=>false, :default=>false})
-> 0.0097s
-- add_column(:posts, :hidden_reason_id, :integer)
-> 0.0002s
== 20130125002652 AddHiddenToPosts: migrated (0.0100s) ========================
== 20130125030305 AddFieldsToPostAction: migrating ============================
-- add_column(:post_actions, :deleted_by, :integer)
-> 0.0003s
-- add_column(:post_actions, :message, :text)
-> 0.0029s
== 20130125030305 AddFieldsToPostAction: migrated (0.0033s) ===================
== 20130125031122 CorrectIndexOnPostAction: migrating =========================
-- remove_index("post_actions", {:name=>"idx_unique_actions"})
-> 0.0009s
-- add_index("post_actions", ["user_id", "post_action_type_id", "post_id", "deleted_at"], {:name=>"idx_unique_actions", :unique=>true})
-> 0.0033s
== 20130125031122 CorrectIndexOnPostAction: migrated (0.0043s) ================
== 20130127213646 RemoveTrustLevels: migrating ================================
-- drop_table(:trust_levels)
-> 0.0006s
-- change_column_default(:users, :trust_level_id, 0)
-> 0.0014s
-- rename_column(:users, :trust_level_id, :trust_level)
-> 0.0019s
-- update("UPDATE users set trust_level = 1")
-> 0.0004s
-> 0 rows
-- remove_column(:users, :moderator)
-> 0.0003s
-- add_column(:users, :flag_level, :integer, {:null=>false, :default=>0})
-> 0.0157s
== 20130127213646 RemoveTrustLevels: migrated (0.0205s) =======================
== 20130128182013 TrustLevelDefaultNull: migrating ============================
-- change_column_default(:users, :trust_level, nil)
-> 0.0013s
== 20130128182013 TrustLevelDefaultNull: migrated (0.0013s) ===================
== 20130129010625 RemovePmReflections: migrating ==============================
-- execute("delete from topic_links where link_topic_id in (select id from topics where archetype = 'private_message') ")
-> 0.0004s
== 20130129010625 RemovePmReflections: migrated (0.0005s) =====================
== 20130129163244 AddTimeReadToUsers: migrating ===============================
-- add_column(:users, :time_read, :integer, {:default=>0, :null=>false})
-> 0.0222s
-- execute("UPDATE users SET time_read = posts_read_count * 20")
-> 0.0003s
== 20130129163244 AddTimeReadToUsers: migrated (0.0226s) ======================
== 20130129174845 AddDaysVisitedToUsers: migrating ============================
-- add_column(:users, :days_visited, :integer, {:null=>false, :default=>0})
-> 0.0166s
-- execute("UPDATE users AS u SET days_visited = (SELECT COUNT(*) FROM user_visits AS uv WHERE uv.user_id = u.id)")
-> 0.0005s
== 20130129174845 AddDaysVisitedToUsers: migrated (0.0171s) ===================
== 20130130154611 RemoveIndexFromViews: migrating =============================
-- remove_index("views", {:name=>"unique_views"})
-> 0.0009s
-- change_column(:views, :viewed_at, :date)
-> 0.0044s
== 20130130154611 RemoveIndexFromViews: migrated (0.0054s) ====================
== 20130131055710 AddCustomFlagCountToTopics: migrating =======================
-- add_column(:topics, :custom_flag_count, :integer, {:null=>false, :default=>0})
-> 0.0113s
-- add_column(:posts, :custom_flag_count, :integer, {:null=>false, :default=>0})
-> 0.0109s
== 20130131055710 AddCustomFlagCountToTopics: migrated (0.0224s) ==============
== 20130201000828 AddColumnSummariesToPostsAndTopics: migrating ===============
-- add_column(:posts, :spam_count, :integer, {:default=>0, :null=>false})
-> 0.0123s
-- add_column(:topics, :spam_count, :integer, {:default=>0, :null=>false})
-> 0.0084s
-- add_column(:posts, :illegal_count, :integer, {:default=>0, :null=>false})
-> 0.0103s
-- add_column(:topics, :illegal_count, :integer, {:default=>0, :null=>false})
-> 0.0167s
-- add_column(:posts, :inappropriate_count, :integer, {:default=>0, :null=>false})
-> 0.0104s
-- add_column(:topics, :inappropriate_count, :integer, {:default=>0, :null=>false})
-> 0.0087s
-- remove_column(:posts, :offensive_count)
-> 0.0003s
-- remove_column(:topics, :offensive_count)
-> 0.0003s
== 20130201000828 AddColumnSummariesToPostsAndTopics: migrated (0.0677s) ======
== 20130201023409 AddPositionToPostActionType: migrating ======================
-- add_column(:post_action_types, :position, :integer, {:default=>0, :null=>false})
-> 0.0055s
== 20130201023409 AddPositionToPostActionType: migrated (0.0055s) =============
== 20130203204338 AddLastVersionAtToPosts: migrating ==========================
-- add_column(:posts, :last_version_at, :timestamp)
-> 0.0004s
-- execute("UPDATE posts SET last_version_at = COALESCE((SELECT max(created_at)\n FROM versions WHERE versions.versioned_id = posts.id\n AND versions.versioned_type = 'Post'), posts.created_at)")
-> 0.0005s
-- change_column(:posts, :last_version_at, :timestamp, {:null=>false})
-> 0.0004s
== 20130203204338 AddLastVersionAtToPosts: migrated (0.0014s) =================
== 20130204000159 AddIpAddressToUsers: migrating ==============================
-- execute("alter table users add column ip_address inet")
-> 0.0003s
== 20130204000159 AddIpAddressToUsers: migrated (0.0003s) =====================
== 20130205021905 AlterFacebookUserId: migrating ==============================
-- change_column(:facebook_user_infos, :facebook_user_id, :integer, {:limit=>8, :null=>false})
-> 0.0104s
== 20130205021905 AlterFacebookUserId: migrated (0.0104s) =====================
== 20130207200019 AddUserDeletedToPosts: migrating ============================
-- add_column(:posts, :user_deleted, :boolean, {:null=>false, :default=>false})
-> 0.0129s
== 20130207200019 AddUserDeletedToPosts: migrated (0.0129s) ===================
== 20130208220635 RemoveReplyBelowPostNumberFromPosts: migrating ==============
-- remove_column(:posts, :reply_below_post_number)
-> 0.0003s
== 20130208220635 RemoveReplyBelowPostNumberFromPosts: migrated (0.0004s) =====
== 20130213021450 RemoveTopicResponseActions: migrating =======================
-- execute("delete from user_actions where action_type = 8")
-> 0.0003s
== 20130213021450 RemoveTopicResponseActions: migrated (0.0004s) ==============
== 20130213203300 AddNewTopicDurationMinutesToUsers: migrating ================
-- add_column(:users, :new_topic_duration_minutes, :integer)
-> 0.0004s
== 20130213203300 AddNewTopicDurationMinutesToUsers: migrated (0.0004s) =======
== 20130221215017 AddDescriptionToCategories: migrating =======================
-- add_column(:categories, :description, :text, {:null=>true})
-> 0.0004s
-- remove_column(:categories, :top1_topic_id)
-> 0.0002s
-- remove_column(:categories, :top2_topic_id)
-> 0.0002s
-- remove_column(:categories, :top1_user_id)
-> 0.0002s
-- remove_column(:categories, :top2_user_id)
-> 0.0002s
== 20130221215017 AddDescriptionToCategories: migrated (0.0031s) ==============
== 20130226015336 AddGithubUserInfo: migrating ================================
-- create_table(:github_user_infos)
-> 0.0116s
-- add_index(:github_user_infos, [:github_user_id], {:unique=>true})
-> 0.0034s
-- add_index(:github_user_infos, [:user_id], {:unique=>true})
-> 0.0081s
== 20130226015336 AddGithubUserInfo: migrated (0.0232s) =======================
== 20130306180148 AddClearedPinnedToTopicUsers: migrating =====================
-- add_column(:topic_users, :cleared_pinned_at, :datetime, {:null=>true})
-> 0.0004s
-- add_column(:topics, :pinned_at, :datetime, {:null=>true})
-> 0.0004s
-- execute("UPDATE topics SET pinned_at = created_at WHERE pinned")
-> 0.0003s
-- remove_column(:topics, :pinned)
-> 0.0004s
== 20130306180148 AddClearedPinnedToTopicUsers: migrated (0.0015s) ============
== 20130311181327 RemoveExtraSpamRecord: migrating ============================
-- execute("UPDATE post_actions SET post_action_type_id = 7 where post_action_type_id = 8")
-> 0.0003s
-- execute("DELETE FROM post_action_types WHERE id = 8")
-> 0.0002s
== 20130311181327 RemoveExtraSpamRecord: migrated (0.0006s) ===================
== 20130313004922 AddExternalLinksInNewTabAnDisableQuotingToUser: migrating ===
-- add_column(:users, :external_links_in_new_tab, :boolean, {:default=>false, :null=>false})
-> 0.0175s
-- add_column(:users, :enable_quoting, :boolean, {:default=>true, :null=>false})
-> 0.0184s
== 20130313004922 AddExternalLinksInNewTabAnDisableQuotingToUser: migrated (0.0360s)
== 20130314093434 AddForegroundColorToCategories: migrating ===================
-- add_column(:categories, :text_color, :string, {:limit=>6, :null=>false, :default=>"FFFFFF"})
-> 0.0115s
== 20130314093434 AddForegroundColorToCategories: migrated (0.0115s) ==========
== 20130315180637 EnableTrigramSupport: migrating =============================
-- execute("CREATE EXTENSION IF NOT EXISTS pg_trgm")
-> 0.0001s
== 20130315180637 EnableTrigramSupport: migrated (0.0002s) ====================
== 20130319122248 AddReplyToUserIdToPost: migrating ===========================
-- add_column(:posts, :reply_to_user_id, :integer)
-> 0.0003s
-- execute("UPDATE posts p SET reply_to_user_id = (\n SELECT u.id from users u \n JOIN posts p2 ON p2.user_id = u.id AND \n p2.post_number = p.reply_to_post_number AND\n p2.topic_id = p.topic_id\n )")
-> 0.0007s
== 20130319122248 AddReplyToUserIdToPost: migrated (0.0011s) ==================
== 20130320012100 AddUserIndexesToPostsAndTopics: migrating ===================
-- execute("CREATE INDEX idx_posts_user_id_deleted_at \n ON posts(user_id) WHERE deleted_at IS NULL")
-> 0.0026s
-- execute("CREATE INDEX idx_topics_user_id_deleted_at \n ON topics(user_id) WHERE deleted_at IS NULL")
-> 0.0027s
== 20130320012100 AddUserIndexesToPostsAndTopics: migrated (0.0054s) ==========
== 20130320024345 AddModeratorToUser: migrating ===============================
-- add_column(:users, :moderator, :boolean, {:default=>false})
-> 0.0269s
-- execute("UPDATE users SET trust_level = 1, moderator = 't' where trust_level = 5")
-> 0.0003s
== 20130320024345 AddModeratorToUser: migrated (0.0274s) ======================
== 20130321154905 RemoveOneboxesFromDb: migrating =============================
-- drop_table(:post_onebox_renders)
-> 0.0003s
-- drop_table(:onebox_renders)
-> 0.0006s
== 20130321154905 RemoveOneboxesFromDb: migrated (0.0010s) ====================
== 20130322183614 AddPercentRankToPosts: migrating ============================
-- add_column(:posts, :percent_rank, :float, {:default=>1.0})
-> 0.0135s
-- execute("UPDATE posts SET percent_rank = x.percent_rank\n FROM (SELECT id, percent_rank()\n OVER (PARTITION BY topic_id ORDER BY SCORE DESC)\n FROM posts) AS x\n WHERE x.id = posts.id")
-> 0.0006s
== 20130322183614 AddPercentRankToPosts: migrated (0.0141s) ===================
== 20130326210101 AddHotnessToCategory: migrating =============================
-- add_column(:categories, :hotness, :float, {:default=>5.0, :null=>false})
-> 0.0108s
== 20130326210101 AddHotnessToCategory: migrated (0.0108s) ====================
== 20130327185852 UpdateSiteSettingsForHot: migrating =========================
-- execute("UPDATE site_settings SET value = REPLACE(value, 'popular|', 'latest|hot|') where name = 'top_menu'")
-> 0.0003s
== 20130327185852 UpdateSiteSettingsForHot: migrated (0.0003s) ================
== 20130328162943 CreateHotTopics: migrating ==================================
-- create_table(:hot_topics, {:force=>true})
-> 0.0042s
-- add_index(:hot_topics, :topic_id, {:unique=>true})
-> 0.0033s
-- add_index(:hot_topics, :score, {:order=>"desc"})
-> 0.0035s
== 20130328162943 CreateHotTopics: migrated (0.0111s) =========================
== 20130328182433 AddScoreToTopics: migrating =================================
-- add_column(:topics, :score, :float)
-> 0.0004s
-- add_column(:topics, :percent_rank, :float, {:null=>false, :default=>1.0})
-> 0.0114s
== 20130328182433 AddScoreToTopics: migrated (0.0119s) ========================
== 20130402210723 AddValuesToHotTopics: migrating =============================
-- add_column(:hot_topics, :random_bias, :float)
-> 0.0003s
-- add_column(:hot_topics, :random_multiplier, :float)
-> 0.0003s
-- add_column(:hot_topics, :days_ago_bias, :float)
-> 0.0002s
-- add_column(:hot_topics, :days_ago_multiplier, :float)
-> 0.0002s
-- add_column(:hot_topics, :hot_topic_type, :integer)
-> 0.0002s
== 20130402210723 AddValuesToHotTopics: migrated (0.0013s) ====================
== 20130404143437 CreateSiteContents: migrating ===============================
-- create_table(:site_contents, {:force=>true, :id=>false})
-> 0.0048s
-- add_index(:site_contents, :content_type, {:unique=>true})
-> 0.0032s
== 20130404143437 CreateSiteContents: migrated (0.0081s) ======================
== 20130404232558 AddUserExtras: migrating ====================================
-- add_column(:users, :likes_given, :integer, {:null=>false, :default=>0})
-> 0.0265s
-- add_column(:users, :likes_received, :integer, {:null=>false, :default=>0})
-> 0.0163s
-- add_column(:users, :topic_reply_count, :integer, {:null=>false, :default=>0})
-> 0.0166s
-- execute("UPDATE users u\nSET\n likes_given = X.likes_given\nFROM (\n SELECT\n a.user_id,\n COUNT(*) likes_given\n FROM user_actions a\n JOIN posts p ON p.id = a.target_post_id\n WHERE p.deleted_at IS NULL AND a.action_type = 1\n GROUP BY a.user_id\n) as X\nWHERE X.user_id = u.id\n")
-> 0.0008s
-- execute("UPDATE users u\nSET\n likes_received = Y.likes_received\nFROM (\n SELECT\n a.user_id,\n COUNT(*) likes_received\n FROM user_actions a\n JOIN posts p ON p.id = a.target_post_id\n WHERE p.deleted_at IS NULL AND a.action_type = 2\n GROUP BY a.user_id\n) as Y\nWHERE Y.user_id = u.id\n")
-> 0.0005s
-- execute("UPDATE users u\nSET\n topic_reply_count = Z.topic_reply_count\nFROM (\n SELECT\n p.user_id,\n COUNT(DISTINCT topic_id) topic_reply_count\n FROM posts p\n JOIN topics t on t.id = p.topic_id\n WHERE t.user_id <> p.user_id AND\n p.deleted_at IS NULL AND t.deleted_at IS NULL\n GROUP BY p.user_id\n) Z\nWHERE\n Z.user_id = u.id\n")
-> 0.0008s
== 20130404232558 AddUserExtras: migrated (0.0617s) ===========================
== 20130411205132 CreateAdminLogs: migrating ==================================
-- create_table(:admin_logs, {:force=>true})
-> 0.0070s
== 20130411205132 CreateAdminLogs: migrated (0.0070s) =========================
== 20130412015502 CorrectCountsOnPosts: migrating =============================
-- rename_column(:posts, :custom_flag_count, :notify_moderators_count)
-> 0.0017s
-- add_column(:posts, :notify_user_count, :integer, {:default=>0, :null=>false})
-> 0.0129s
== 20130412015502 CorrectCountsOnPosts: migrated (0.0147s) ====================
== 20130412020156 CorrectCountsOnTopics: migrating ============================
-- rename_column(:topics, :custom_flag_count, :notify_moderators_count)
-> 0.0014s
-- add_column(:topics, :notify_user_count, :integer, {:default=>0, :null=>false})
-> 0.0177s
== 20130412020156 CorrectCountsOnTopics: migrated (0.0192s) ===================
== 20130416004607 CreateGroups: migrating =====================================
-- create_table(:groups, {:force=>true})
-> 0.0083s
== 20130416004607 CreateGroups: migrated (0.0084s) ============================
== 20130416004933 GroupUsers: migrating =======================================
-- create_table(:group_users, {:force=>true})
-> 0.0043s
-- add_index(:group_users, [:group_id, :user_id], {:unique=>true})
-> 0.0041s
== 20130416004933 GroupUsers: migrated (0.0085s) ==============================
== 20130416170855 AddSubtypeToTopics: migrating ===============================
-- add_column(:topics, :subtype, :string)
-> 0.0004s
-- execute("update topics set subtype = 'user_to_user' where archetype = 'private_message'")
-> 0.0003s
== 20130416170855 AddSubtypeToTopics: migrated (0.0008s) ======================
== 20130419195746 IncreaseDataLengthOnNotifications: migrating ================
-- execute("ALTER TABLE notifications ALTER COLUMN data TYPE VARCHAR(1000)")
-> 0.0096s
== 20130419195746 IncreaseDataLengthOnNotifications: migrated (0.0096s) =======
== 20130422050626 AddRelatedPostIdToPostActions: migrating ====================
-- add_column(:post_actions, :related_post_id, :integer)
-> 0.0003s
== 20130422050626 AddRelatedPostIdToPostActions: migrated (0.0003s) ===========
== 20130424015746 AddSlugToTopics: migrating ==================================
-- add_column(:topics, :slug, :string)
-> 0.0004s
== 20130424015746 AddSlugToTopics: migrated (0.0004s) =========================
== 20130424055025 AddUserIdToIncomingLinks: migrating =========================
-- add_column(:incoming_links, :user_id, :integer)
-> 0.0003s
== 20130424055025 AddUserIdToIncomingLinks: migrated (0.0003s) ================
== 20130426044914 AllowNullsInIncomingLinks: migrating ========================
-- change_column(:incoming_links, :referer, :string, {:limit=>1000, :null=>true})
-> 0.0004s
-- change_column(:incoming_links, :domain, :string, {:limit=>100, :null=>true})
-> 0.0004s
== 20130426044914 AllowNullsInIncomingLinks: migrated (0.0009s) ===============
== 20130426052257 AddIncomingIpCurrentUserIdToIncomingLinks: migrating ========
-- add_column(:incoming_links, :ip_address, :inet)
-> 0.0003s
-- add_column(:incoming_links, :current_user_id, :int)
-> 0.0002s
== 20130426052257 AddIncomingIpCurrentUserIdToIncomingLinks: migrated (0.0006s)
== 20130428194335 AddUnstarredAtToTopicUsers: migrating =======================
-- add_column(:topic_users, :unstarred_at, :datetime)
-> 0.0003s
== 20130428194335 AddUnstarredAtToTopicUsers: migrated (0.0004s) ==============
== 20130429000101 AddSecurityToCategories: migrating ==========================
-- add_column(:categories, :secure, :boolean, {:default=>false, :null=>false})
-> 0.0107s
-- create_table(:category_groups, {:force=>true})
-> 0.0040s
== 20130429000101 AddSecurityToCategories: migrated (0.0148s) =================
== 20130430052751 AddTopicAllowedGroups: migrating ============================
-- create_table(:topic_allowed_groups, {:force=>true})
-> 0.0039s
-- add_index(:topic_allowed_groups, [:group_id, :topic_id], {:unique=>true})
-> 0.0033s
-- add_index(:topic_allowed_groups, [:topic_id, :group_id], {:unique=>true})
-> 0.0034s
== 20130430052751 AddTopicAllowedGroups: migrated (0.0108s) ===================
== 20130501105651 FixTopicAllowedGroups: migrating ============================
-- remove_column(:topic_allowed_groups, :integer)
-> 0.0004s
== 20130501105651 FixTopicAllowedGroups: migrated (0.0004s) ===================
== 20130506020935 AddAutomaticToGroups: migrating =============================
-- add_column(:groups, :automatic, :boolean, {:default=>false, :null=>false})
-> 0.0076s
-- execute(" ALTER SEQUENCE groups_id_seq START WITH 100\n")
-> 0.0001s
== 20130506020935 AddAutomaticToGroups: migrated (0.0078s) ====================
== 20130506185042 AddAutoCloseAtToTopics: migrating ===========================
-- add_column(:topics, :auto_close_at, :datetime)
-> 0.0004s
-- add_column(:topics, :auto_close_user_id, :integer)
-> 0.0003s
== 20130506185042 AddAutoCloseAtToTopics: migrated (0.0007s) ==================
== 20130508040235 AddUserCountToGroups: migrating =============================
-- add_column(:groups, :user_count, :integer, {:null=>false, :default=>0})
-> 0.0059s
== 20130508040235 AddUserCountToGroups: migrated (0.0059s) ====================
== 20130509040248 UpdateSequenceForGroups: migrating ==========================
-- execute(" SELECT setval('groups_id_seq', 40)\n")
-> 0.0002s
== 20130509040248 UpdateSequenceForGroups: migrated (0.0002s) =================
== 20130509041351 AddUniqueNameToGroups: migrating ============================
-- add_index(:groups, [:name], {:unique=>true})
-> 0.0082s
== 20130509041351 AddUniqueNameToGroups: migrated (0.0083s) ===================
== 20130515193551 AddAutoCloseDaysToCategories: migrating =====================
-- add_column(:categories, :auto_close_days, :float)
-> 0.0003s
== 20130515193551 AddAutoCloseDaysToCategories: migrated (0.0004s) ============
== 20130521210140 CreateCasUserInfos: migrating ===============================
-- create_table(:cas_user_infos)
-> 0.0097s
-- add_index(:cas_user_infos, :user_id, {:unique=>true})
-> 0.0040s
-- add_index(:cas_user_infos, :cas_user_id, {:unique=>true})
-> 0.0032s
== 20130521210140 CreateCasUserInfos: migrated (0.0170s) ======================
== 20130522193615 RenameSearchTables: migrating ===============================
-- rename_table(:users_search, :user_search_data)
-> 0.0031s
-- rename_column(:user_search_data, :id, :user_id)
-> 0.0010s
-- rename_table(:categories_search, :category_search_data)
-> 0.0027s
-- rename_column(:category_search_data, :id, :category_id)
-> 0.0010s
-- rename_table(:posts_search, :post_search_data)
-> 0.0027s
-- rename_column(:post_search_data, :id, :post_id)
-> 0.0010s
== 20130522193615 RenameSearchTables: migrated (0.0117s) ======================
== 20130527152648 AddLikeScoreToPosts: migrating ==============================
-- add_column(:posts, :like_score, :integer, {:default=>0, :null=>false})
-> 0.0129s
-- execute("UPDATE posts p\n set like_score = x.like_score\n FROM (SELECT pa.post_id,\n SUM(CASE\n WHEN u.admin OR u.moderator THEN 3\n ELSE 1\n END) AS like_score\n FROM post_actions AS pa\n INNER JOIN users AS u ON u.id = pa.user_id\n GROUP BY pa.post_id) AS x\n WHERE x.post_id = p.id")
-> 0.0008s
== 20130527152648 AddLikeScoreToPosts: migrated (0.0138s) =====================
== 20130528174147 AddRankToCategoryFeaturedTopics: migrating ==================
-- add_column(:category_featured_topics, :rank, :integer, {:default=>0, :null=>false})
-> 0.0053s
-- add_index(:category_featured_topics, [:category_id, :rank])
-> 0.0035s
== 20130528174147 AddRankToCategoryFeaturedTopics: migrated (0.0089s) =========
== 20130531210816 AddStaffTookActionToPostActions: migrating ==================
-- add_column(:post_actions, :staff_took_action, :boolean, {:default=>false, :null=>false})
-> 0.0102s
== 20130531210816 AddStaffTookActionToPostActions: migrated (0.0103s) =========
== 20130603192412 AddBlockedToUsers: migrating ================================
-- add_column(:users, :blocked, :boolean, {:default=>false})
-> 0.0222s
== 20130603192412 AddBlockedToUsers: migrated (0.0222s) =======================
== 20130606190601 AddAutoCloseStartedAtToTopics: migrating ====================
-- add_column(:topics, :auto_close_started_at, :datetime)
-> 0.0005s
== 20130606190601 AddAutoCloseStartedAtToTopics: migrated (0.0006s) ===========
== 20130610201033 AddReplyKeyToEmailLogs: migrating ===========================
-- add_column(:email_logs, :reply_key, :string, {:limit=>32})
-> 0.0003s
-- add_index(:email_logs, :reply_key)
-> 0.0049s
== 20130610201033 AddReplyKeyToEmailLogs: migrated (0.0053s) ==================
== 20130612200846 CreatePostUploadJoinTable: migrating ========================
-- create_table(:posts_uploads, {:force=>true, :id=>false})
-> 0.0009s
-- add_index(:posts_uploads, :post_id)
-> 0.0034s
-- add_index(:posts_uploads, :upload_id)
-> 0.0035s
-- add_index(:posts_uploads, [:post_id, :upload_id], {:unique=>true})
-> 0.0032s
== 20130612200846 CreatePostUploadJoinTable: migrated (0.0111s) ===============
== 20130613211700 DropPostsUploads: migrating =================================
-- drop_table(:posts_uploads)
-> 0.0004s
== 20130613211700 DropPostsUploads: migrated (0.0005s) ========================
== 20130613212230 CreatePostUploads: migrating ================================
-- create_table(:post_uploads)
-> 0.0034s
-- execute("create unique index idx_unique_post_uploads on post_uploads(post_id, upload_id)")
-> 0.0023s
== 20130613212230 CreatePostUploads: migrated (0.0058s) =======================
== 20130615064344 AddDynamicFaviconPreferenceToUser: migrating ================
-- add_column(:users, :dynamic_favicon, :boolean, {:default=>false, :null=>false})
-> 0.0181s
== 20130615064344 AddDynamicFaviconPreferenceToUser: migrated (0.0181s) =======
== 20130615073305 RemoveTopicIdFromUploads: migrating =========================
-- remove_column(:uploads, :topic_id)
-> 0.0004s
== 20130615073305 RemoveTopicIdFromUploads: migrated (0.0004s) ================
== 20130615075557 AddShaToUploads: migrating ==================================
-- add_column(:uploads, :sha, :string, {:null=>true})
-> 0.0003s
-- add_index(:uploads, :sha, {:unique=>true})
-> 0.0038s
== 20130615075557 AddShaToUploads: migrated (0.0043s) =========================
== 20130616082327 CreateOptimizedImages: migrating ============================
-- create_table(:optimized_images)
-> 0.0060s
-- add_index(:optimized_images, :upload_id)
-> 0.0033s
-- add_index(:optimized_images, [:upload_id, :width, :height], {:unique=>true})
-> 0.0035s
== 20130616082327 CreateOptimizedImages: migrated (0.0129s) ===================
== 20130617014127 RenameShaAndExtColumns: migrating ===========================
-- rename_column(:optimized_images, :sha, :sha1)
-> 0.0014s
-- change_column(:optimized_images, :sha1, :string, {:limit=>40})
-> 0.0112s
-- rename_column(:optimized_images, :ext, :extension)
-> 0.0012s
-- change_column(:optimized_images, :extension, :string, {:limit=>10})
-> 0.0168s
== 20130617014127 RenameShaAndExtColumns: migrated (0.0307s) ==================
== 20130617180009 RenameShaColumn: migrating ==================================
-- remove_index(:uploads, :sha)
-> 0.0009s
-- rename_column(:uploads, :sha, :sha1)
-> 0.0010s
-- change_column(:uploads, :sha1, :string, {:limit=>40})
-> 0.0079s
-- add_index(:uploads, :sha1, {:unique=>true})
-> 0.0034s
== 20130617180009 RenameShaColumn: migrated (0.0133s) =========================
== 20130617181804 AddPostIdToEmailLogs: migrating =============================
-- add_column(:email_logs, :post_id, :integer, {:null=>true})
-> 0.0003s
-- add_column(:email_logs, :topic_id, :integer, {:null=>true})
-> 0.0002s
== 20130617181804 AddPostIdToEmailLogs: migrated (0.0006s) ====================
== 20130619063902 AddDeferToPostActions: migrating ============================
-- add_column(:post_actions, :defer, :boolean)
-> 0.0003s
-- add_column(:post_actions, :defer_by, :int)
-> 0.0003s
== 20130619063902 AddDeferToPostActions: migrated (0.0006s) ===================
== 20130621042855 ChangeSupressToSuppress: migrating ==========================
== 20130621042855 ChangeSupressToSuppress: migrated (0.0121s) =================
== 20130622110348 AddUrlIndexToUploads: migrating =============================
-- add_index(:uploads, :url)
-> 0.0038s
== 20130622110348 AddUrlIndexToUploads: migrated (0.0039s) ====================
== 20130624203206 ChangeIpToInetInTopicLinkClicks: migrating ==================
-- add_column(:topic_link_clicks, :ip_address, :inet)
-> 0.0026s
-- execute("UPDATE topic_link_clicks SET ip_address = inet(\n (ip >> 24 & 255) || '.' ||\n (ip >> 16 & 255) || '.' ||\n (ip >> 8 & 255) || '.' ||\n (ip >> 0 & 255)\n );")
-> 0.0006s
-- change_column(:topic_link_clicks, :ip_address, :inet, {:null=>false})
-> 0.0004s
-- remove_column(:topic_link_clicks, :ip)
-> 0.0002s
== 20130624203206 ChangeIpToInetInTopicLinkClicks: migrated (0.0040s) =========
== 20130625022454 ChangeIpToInetInViews: migrating ============================
-- add_column(:views, :ip_address, :inet)
-> 0.0027s
-- execute("UPDATE views SET ip_address = inet(\n (ip >> 24 & 255) || '.' ||\n (ip >> 16 & 255) || '.' ||\n (ip >> 8 & 255) || '.' ||\n (ip >> 0 & 255)\n );")
-> 0.0003s
-- change_column(:views, :ip_address, :inet, {:null=>false})
-> 0.0003s
-- remove_column(:views, :ip)
-> 0.0002s
== 20130625022454 ChangeIpToInetInViews: migrated (0.0037s) ===================
== 20130625170842 RemoveAccessPassword: migrating =============================
-- execute("SELECT count(*) FROM site_settings where name='access_password' and char_length(value) > 0")
-> 0.0002s
== 20130625170842 RemoveAccessPassword: migrated (0.0003s) ====================
== 20130625201113 AddTitleToUsers: migrating ==================================
-- add_column(:users, :title, :string)
-> 0.0004s
== 20130625201113 AddTitleToUsers: migrated (0.0004s) =========================
== 20130709184941 AddDeletedByIdToPosts: migrating ============================
-- add_column(:posts, :deleted_by_id, :integer, {:null=>true})
-> 0.0004s
-- add_column(:topics, :deleted_by_id, :integer, {:null=>true})
-> 0.0003s
-- add_column(:invites, :deleted_by_id, :integer, {:null=>true})
-> 0.0002s
-- rename_column(:post_actions, :deleted_by, :deleted_by_id)
-> 0.0015s
== 20130709184941 AddDeletedByIdToPosts: migrated (0.0025s) ===================
== 20130710201248 AddNukedUserToPosts: migrating ==============================
-- add_column(:posts, :nuked_user, :boolean, {:default=>false})
-> 0.0133s
== 20130710201248 AddNukedUserToPosts: migrated (0.0134s) =====================
== 20130712041133 AddPermissionTypeToCategoryGroups: migrating ================
-- add_column(:category_groups, :permission_type, :integer, {:default=>1})
-> 0.0093s
-- rename_column(:categories, :secure, :read_restricted)
-> 0.0013s
== 20130712041133 AddPermissionTypeToCategoryGroups: migrated (0.0107s) =======
== 20130712163509 AddMissingIdColumns: migrating ==============================
-- add_column(:category_featured_topics, :id, :primary_key)
-> 0.0125s
-- add_column(:topic_users, :id, :primary_key)
-> 0.0070s
== 20130712163509 AddMissingIdColumns: migrated (0.0196s) =====================
== 20130723212758 RenameAdminLog: migrating ===================================
-- rename_table(:admin_logs, :staff_action_logs)
-> 0.0022s
-- rename_column(:staff_action_logs, :admin_id, :staff_user_id)
-> 0.0008s
== 20130723212758 RenameAdminLog: migrated (0.0030s) ==========================
== 20130724201552 CreateBlockedEmails: migrating ==============================
-- create_table(:blocked_emails)
-> 0.0068s
-- add_index(:blocked_emails, :email, {:unique=>true})
-> 0.0033s
== 20130724201552 CreateBlockedEmails: migrated (0.0101s) =====================
== 20130725213613 AddMoreToStaffActionLog: migrating ==========================
-- add_column(:staff_action_logs, :context, :string)
-> 0.0003s
-- add_column(:staff_action_logs, :ip_address, :string)
-> 0.0002s
-- add_column(:staff_action_logs, :email, :string)
-> 0.0002s
== 20130725213613 AddMoreToStaffActionLog: migrated (0.0009s) =================
== 20130728172550 AddUrlToOptimizedImages: migrating ==========================
-- add_column(:optimized_images, :url, :string)
-> 0.0030s
-- execute("UPDATE optimized_images\n SET url = substring(u.url from '^/uploads/[^/]+/')\n || '_optimized/'\n || substring(oi.sha1 for 3) || '/'\n || substring(oi.sha1 from 4 for 3) || '/'\n || substring(oi.sha1 from 7 for 11) || oi.extension\n FROM optimized_images oi\n JOIN uploads u ON u.id = oi.upload_id\n WHERE optimized_images.id = oi.id;")
-> 0.0008s
-- change_column(:optimized_images, :url, :string, {:null=>false})
-> 0.0004s
== 20130728172550 AddUrlToOptimizedImages: migrated (0.0042s) =================
== 20130731163035 AddReportIndexToIncomingLinks: migrating ====================
-- add_index(:incoming_links, [:created_at, :user_id])
-> 0.0039s
-- add_index(:incoming_links, [:created_at, :domain])
-> 0.0036s
== 20130731163035 AddReportIndexToIncomingLinks: migrated (0.0075s) ===========
== 20130807202516 AddLastMatchIndexToBlockedEmails: migrating =================
-- add_index(:blocked_emails, :last_match_at)
-> 0.0034s
== 20130807202516 AddLastMatchIndexToBlockedEmails: migrated (0.0034s) ========
== 20130809160751 FixSeenNotificationIds: migrating ===========================
-- execute("UPDATE users SET\n seen_notification_id = COALESCE((SELECT MAX(notifications.id)\n FROM notifications\n WHERE user_id = users.id AND created_at <= users.last_seen_at), 0)")
-> 0.0008s
== 20130809160751 FixSeenNotificationIds: migrated (0.0008s) ==================
== 20130809204732 AddFilterIndexesToStaffActionLogs: migrating ================
-- add_index(:staff_action_logs, [:action, :id])
-> 0.0037s
-- add_index(:staff_action_logs, [:staff_user_id, :id])
-> 0.0037s
-- add_index(:staff_action_logs, [:target_user_id, :id])
-> 0.0034s
== 20130809204732 AddFilterIndexesToStaffActionLogs: migrated (0.0109s) =======
== 20130809211409 AddAvatarToUsers: migrating =================================
-- add_column(:users, :use_uploaded_avatar, :boolean, {:default=>false})
-> 0.0284s
-- add_column(:users, :uploaded_avatar_template, :string)
-> 0.0003s
-- add_column(:users, :uploaded_avatar_id, :integer)
-> 0.0003s
== 20130809211409 AddAvatarToUsers: migrated (0.0291s) ========================
== 20130813204212 CreateScreenedUrls: migrating ===============================
-- create_table(:screened_urls)
-> 0.0067s
-- add_index(:screened_urls, :url, {:unique=>true})
-> 0.0035s
-- add_index(:screened_urls, :last_match_at)
-> 0.0036s
== 20130813204212 CreateScreenedUrls: migrated (0.0140s) ======================
== 20130813224817 RenameBlockedEmailsToScreenedEmails: migrating ==============
-- rename_table(:blocked_emails, :screened_emails)
-> 0.0030s
== 20130813224817 RenameBlockedEmailsToScreenedEmails: migrated (0.0030s) =====
== 20130816024250 CreateOauth2UserInfos: migrating ============================
-- create_table(:oauth2_user_infos)
-> 0.0067s
-- add_index(:oauth2_user_infos, [:uid, :provider], {:unique=>true})
-> 0.0035s
== 20130816024250 CreateOauth2UserInfos: migrated (0.0102s) ===================
== 20130819192358 AddValueColumnsToStaffActionLogs: migrating =================
-- add_column(:staff_action_logs, :subject, :text)
-> 0.0003s
-- add_column(:staff_action_logs, :previous_value, :text)
-> 0.0002s
-- add_column(:staff_action_logs, :new_value, :text)
-> 0.0002s
== 20130819192358 AddValueColumnsToStaffActionLogs: migrated (0.0009s) ========
== 20130820174431 AddSubjectIndexToStaffActionLogs: migrating =================
-- add_index(:staff_action_logs, [:subject, :id])
-> 0.0044s
== 20130820174431 AddSubjectIndexToStaffActionLogs: migrated (0.0045s) ========
== 20130822213513 AddIpAddressToScreeningTables: migrating ====================
-- add_column(:screened_emails, :ip_address, :inet)
-> 0.0003s
-- add_column(:screened_urls, :ip_address, :inet)
-> 0.0002s
== 20130822213513 AddIpAddressToScreeningTables: migrated (0.0006s) ===========
== 20130823201420 DropDefaultsOnEmailDigestColumnsOfUsers: migrating ==========
-- change_column_default(:users, :email_digests, nil)
-> 0.0018s
-- change_column(:users, :digest_after_days, :integer, {:default=>nil, :null=>true})
-> 0.0022s
== 20130823201420 DropDefaultsOnEmailDigestColumnsOfUsers: migrated (0.0040s) =
== 20130826011521 CreatePluginStoreRows: migrating ============================
-- create_table(:plugin_store_rows)
-> 0.0058s
-- add_index(:plugin_store_rows, [:plugin_name, :key], {:unique=>true})
-> 0.0038s
== 20130826011521 CreatePluginStoreRows: migrated (0.0097s) ===================
== 20130828192526 FixOptimizedImagesUrls: migrating ===========================
-- execute("UPDATE optimized_images\n SET url = substring(oi.url from '^\\/uploads\\/[^/]+\\/_optimized\\/[0-9a-f]{3}\\/[0-9a-f]{3}\\/[0-9a-f]{11}')\n || '_'\n || oi.width\n || 'x'\n || oi.height\n || substring(oi.url from '\\.\\w{3,4}$')\n FROM optimized_images oi\n WHERE optimized_images.id = oi.id\n AND oi.url ~ '^\\/uploads\\/[^/]+\\/_optimized\\/[0-9a-f]{3}\\/[0-9a-f]{3}\\/[0-9a-f]{11}\\.';")
-> 0.0016s
== 20130828192526 FixOptimizedImagesUrls: migrated (0.0017s) ==================
== 20130903154323 AllowNullUserIdOnPosts: migrating ===========================
-- change_column(:posts, :user_id, :integer, {:null=>true})
-> 0.0030s
-- execute("UPDATE posts SET user_id = NULL WHERE nuked_user = true")
-> 0.0003s
-- remove_column(:posts, :nuked_user)
-> 0.0003s
== 20130903154323 AllowNullUserIdOnPosts: migrated (0.0037s) ==================
== 20130904181208 AllowNullUserIdOnTopics: migrating ==========================
-- change_column(:topics, :user_id, :integer, {:null=>true})
-> 0.0028s
== 20130904181208 AllowNullUserIdOnTopics: migrated (0.0029s) =================
== 20130906081326 RenameSystemUsername: migrating =============================
-- execute("update site_settings set name = 'site_contact_username' where name = 'system_username'")
-> 0.0002s
== 20130906081326 RenameSystemUsername: migrated (0.0002s) ====================
== 20130906171631 AddIndexToUploads: migrating ================================
-- add_index(:uploads, [:id, :url])
-> 0.0086s
== 20130906171631 AddIndexToUploads: migrated (0.0087s) =======================
== 20130910040235 IndexTopicsForFrontPage: migrating ==========================
-- add_index(:topics, [:deleted_at, :visible, :archetype, :id])
-> 0.0090s
-- add_index(:topics, [:id, :deleted_at])
-> 0.0034s
== 20130910040235 IndexTopicsForFrontPage: migrated (0.0124s) =================
== 20130910220317 RenameStaffActionLogsToUserHistory: migrating ===============
-- remove_index(:staff_action_logs, [:staff_user_id, :id])
-> 0.0010s
-- rename_table(:staff_action_logs, :user_histories)
-> 0.0036s
-- rename_column(:user_histories, :staff_user_id, :acting_user_id)
-> 0.0015s
-- add_index(:user_histories, [:acting_user_id, :action, :id])
-> 0.0041s
== 20130910220317 RenameStaffActionLogsToUserHistory: migrated (0.0103s) ======
== 20130911182437 CreateUserStats: migrating ==================================
-- create_table(:user_stats, {:id=>false})
-> 0.0008s
-- execute("ALTER TABLE user_stats ADD PRIMARY KEY (user_id)")
-> 0.0027s
-- execute("INSERT INTO user_stats (user_id) SELECT id FROM users")
-> 0.0004s
== 20130911182437 CreateUserStats: migrated (0.0040s) =========================
== 20130912185218 ActingUserNull: migrating ===================================
-- change_column(:user_histories, :acting_user_id, :integer, {:null=>true})
-> 0.0008s
== 20130912185218 ActingUserNull: migrated (0.0009s) ==========================
== 20130913210454 AddMobileToSiteCustomizations: migrating ====================
-- add_column(:site_customizations, :mobile_stylesheet, :text)
-> 0.0003s
-- add_column(:site_customizations, :mobile_header, :text)
-> 0.0002s
-- add_column(:site_customizations, :mobile_stylesheet_baked, :text)
-> 0.0002s
== 20130913210454 AddMobileToSiteCustomizations: migrated (0.0008s) ===========
== 20130917174738 AddTopicIdToUserHistories: migrating ========================
-- add_column(:user_histories, :topic_id, :integer)
-> 0.0003s
== 20130917174738 AddTopicIdToUserHistories: migrated (0.0003s) ===============
== 20131001060630 AddEmailAlwaysToUsers: migrating ============================
-- add_column(:users, :email_always, :bool, {:default=>false, :null=>false})
-> 0.0177s
== 20131001060630 AddEmailAlwaysToUsers: migrated (0.0177s) ===================
== 20131002070347 AddUserIdParentTypeIndexOnViews: migrating ==================
-- add_index(:views, [:user_id, :parent_type, :parent_id])
-> 0.0037s
== 20131002070347 AddUserIdParentTypeIndexOnViews: migrated (0.0037s) =========
== 20131003061137 MoveColumnsToUserStats: migrating ===========================
-- add_column(:user_stats, :topics_entered, :integer, {:default=>0, :null=>false})
-> 0.0047s
-- add_column(:user_stats, :time_read, :integer, {:default=>0, :null=>false})
-> 0.0045s
-- add_column(:user_stats, :days_visited, :integer, {:default=>0, :null=>false})
-> 0.0044s
-- add_column(:user_stats, :posts_read_count, :integer, {:default=>0, :null=>false})
-> 0.0045s
-- add_column(:user_stats, :likes_given, :integer, {:default=>0, :null=>false})
-> 0.0092s
-- add_column(:user_stats, :likes_received, :integer, {:default=>0, :null=>false})
-> 0.0096s
-- add_column(:user_stats, :topic_reply_count, :integer, {:default=>0, :null=>false})
-> 0.0051s
-- execute("UPDATE user_stats s\n SET topics_entered = u.topics_entered,\n time_read = u.time_read,\n days_visited = u.days_visited,\n posts_read_count = u.posts_read_count,\n likes_given = u.likes_given,\n likes_received = u.likes_received,\n topic_reply_count = u.topic_reply_count\n FROM users u WHERE u.id = s.user_id\n ")
-> 0.0006s
-- remove_column(:users, :topics_entered)
-> 0.0003s
-- remove_column(:users, :time_read)
-> 0.0004s
-- remove_column(:users, :days_visited)
-> 0.0003s
-- remove_column(:users, :posts_read_count)
-> 0.0003s
-- remove_column(:users, :likes_given)
-> 0.0003s
-- remove_column(:users, :likes_received)
-> 0.0003s
-- remove_column(:users, :topic_reply_count)
-> 0.0003s
== 20131003061137 MoveColumnsToUserStats: migrated (0.0453s) ==================
== 20131014203951 BackfillPostUploadReverseIndex: migrating ===================
-- execute("TRUNCATE TABLE post_uploads")
-> 0.0044s
== 20131014203951 BackfillPostUploadReverseIndex: migrated (0.0090s) ==========
== 20131015131652 CreatePostDetails: migrating ================================
-- create_table(:post_details)
-> 0.0065s
-- add_index(:post_details, [:post_id, :key], {:unique=>true})
-> 0.0036s
== 20131015131652 CreatePostDetails: migrated (0.0102s) =======================
== 20131017014509 AddPostCountToCategories: migrating =========================
-- add_column(:categories, :post_count, :integer, {:null=>false, :default=>0})
-> 0.0109s
-- execute(" UPDATE categories\n SET post_count = (SELECT COALESCE(SUM(posts_count),0) FROM topics\n WHERE category_id = categories.id AND deleted_at IS NULL)\n")
-> 0.0005s
== 20131017014509 AddPostCountToCategories: migrated (0.0115s) ================
== 20131017030605 AddLatestToCategories: migrating ============================
-- add_column(:categories, :latest_post_id, :integer)
-> 0.0003s
-- add_column(:categories, :latest_topic_id, :integer)
-> 0.0002s
-- execute(" UPDATE categories c\n SET latest_post_id = x.post_id\n FROM (select category_id, max(p.id) post_id FROM posts p\n JOIN topics t on t.id = p.topic_id\n WHERE p.deleted_at IS NULL AND NOT p.hidden AND t.visible\n GROUP BY category_id\n ) x\n WHERE x.category_id = c.id\n")
-> 0.0005s
-- execute(" UPDATE categories c\n SET latest_topic_id = x.topic_id\n FROM (select category_id, max(t.id) topic_id\n FROM topics t\n WHERE t.deleted_at IS NULL AND t.visible\n GROUP BY category_id\n ) x\n WHERE x.category_id = c.id\n")
-> 0.0003s
== 20131017030605 AddLatestToCategories: migrated (0.0015s) ===================
== 20131017205954 CreateScreenedIpAddresses: migrating ========================
-- create_table(:screened_ip_addresses)
-> 0.0068s
-- add_index(:screened_ip_addresses, :ip_address, {:unique=>true})
-> 0.0042s
-- add_index(:screened_ip_addresses, :last_match_at)
-> 0.0032s
== 20131017205954 CreateScreenedIpAddresses: migrated (0.0142s) ===============
== 20131018050738 AddPositionToCategories: migrating ==========================
-- add_column(:categories, :position, :integer)
-> 0.0003s
-- execute("UPDATE categories SET position = id")
-> 0.0002s
-- change_column(:categories, :position, :integer, {:null=>false})
-> 0.0004s
== 20131018050738 AddPositionToCategories: migrated (0.0009s) =================
== 20131022045114 AddUncategorizedCategory: migrating =========================
-- execute("SELECT 1 FROM categories WHERE lower(name) = 'uncategorized'")
-> 0.0002s
-- execute("INSERT INTO categories\n (name,color,slug,description,text_color, user_id, created_at, updated_at, position)\n VALUES ('Uncategorized', 'AB9364', 'uncategorized', '', 'FFFFFF', -1, now(), now(), 0 )\n RETURNING id\n ")
-> 0.0004s
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\n VALUES ('uncategorized_category_id', 3, 1, now(), now())")
-> 0.0002s
-- execute("DELETE from site_settings where name in ('uncategorized_name', 'uncategorized_text_color', 'uncategorized_color')")
-> 0.0002s
-- execute("UPDATE topics SET category_id = 1 WHERE archetype = 'regular' AND category_id IS NULL")
-> 0.0002s
-- execute("ALTER table topics ADD CONSTRAINT has_category_id CHECK (category_id IS NOT NULL OR archetype <> 'regular')")
-> 0.0004s
== 20131022045114 AddUncategorizedCategory: migrated (0.0018s) ================
== 20131022151218 CreateApiKeys: migrating ====================================
-- create_table(:api_keys)
-> 0.0043s
-- add_index(:api_keys, :key)
-> 0.0035s
-- add_index(:api_keys, :user_id, {:unique=>true})
-> 0.0078s
-- execute("INSERT INTO api_keys (key, created_at, updated_at) SELECT value, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM site_settings WHERE name = 'api_key'")
-> 0.0002s
-- execute("DELETE FROM site_settings WHERE name = 'api_key'")
-> 0.0001s
== 20131022151218 CreateApiKeys: migrated (0.0162s) ===========================
== 20131023163509 AddParentCategoryIdToCategories: migrating ==================
-- add_column(:categories, :parent_category_id, :integer)
-> 0.0003s
== 20131023163509 AddParentCategoryIdToCategories: migrated (0.0003s) =========
== 20131105101051 AddOriginToUploads: migrating ===============================
-- add_column(:uploads, :origin, :string, {:limit=>1000})
-> 0.0003s
== 20131105101051 AddOriginToUploads: migrated (0.0003s) ======================
== 20131107154900 RenameBannedToSuspended: migrating ==========================
-- rename_column(:users, :banned_at, :suspended_at)
-> 0.0022s
-- rename_column(:users, :banned_till, :suspended_till)
-> 0.0019s
== 20131107154900 RenameBannedToSuspended: migrated (0.0042s) =================
== 20131114185225 AddParticipantCountToTopics: migrating ======================
-- add_column(:topics, :participant_count, :integer, {:default=>1})
-> 0.0171s
-- execute("UPDATE topics SET participant_count =\n (SELECT COUNT(DISTINCT p.user_id) FROM posts AS p WHERE p.topic_id = topics.id)")
-> 0.0004s
== 20131114185225 AddParticipantCountToTopics: migrated (0.0177s) =============
== 20131115165105 AddEditReasonToPosts: migrating =============================
-- add_column(:posts, :edit_reason, :string)
-> 0.0004s
== 20131115165105 AddEditReasonToPosts: migrated (0.0004s) ====================
== 20131118173159 RenameBestOfToSummary: migrating ============================
-- rename_column(:topics, :has_best_of, :has_summary)
-> 0.0021s
== 20131118173159 RenameBestOfToSummary: migrated (0.0021s) ===================
== 20131120055018 MoveEmojiToNewLocation: migrating ===========================
-- execute("update posts set cooked = regexp_replace(cooked, '(<img[^>]*)assets/emoji/', '\\1plugins/emoji/images/' , 'g') where cooked like '%emoji%'")
-> 0.0003s
== 20131120055018 MoveEmojiToNewLocation: migrated (0.0004s) ==================
== 20131122064921 IncreaseTwitterUserIdLength: migrating ======================
-- change_column(:twitter_user_infos, :twitter_user_id, :bigint)
-> 0.0105s
== 20131122064921 IncreaseTwitterUserIdLength: migrated (0.0105s) =============
== 20131206200009 RenameAutoCloseDaysToHours: migrating =======================
-- rename_column(:categories, :auto_close_days, :auto_close_hours)
-> 0.0013s
-- execute("update categories set auto_close_hours = auto_close_hours * 24")
-> 0.0003s
== 20131206200009 RenameAutoCloseDaysToHours: migrated (0.0017s) ==============
== 20131209091702 CreatePostRevisions: migrating ==============================
-- create_table(:post_revisions)
-> 0.0060s
-- execute("INSERT INTO post_revisions (user_id, post_id, modifications, number, created_at, updated_at)\n SELECT user_id, versioned_id, modifications, number, created_at, updated_at\n FROM versions\n WHERE versioned_type = 'Post'")
-> 0.0003s
-- change_table(:post_revisions)
-> 0.0070s
== 20131209091702 CreatePostRevisions: migrated (0.0135s) =====================
== 20131209091742 CreateTopicRevisions: migrating =============================
-- create_table(:topic_revisions)
-> 0.0059s
-- execute("INSERT INTO topic_revisions (user_id, topic_id, modifications, number, created_at, updated_at)\n SELECT user_id, versioned_id, modifications, number, created_at, updated_at\n FROM versions\n WHERE versioned_type = 'Topic'")
-> 0.0003s
-- change_table(:topic_revisions)
-> 0.0071s
== 20131209091742 CreateTopicRevisions: migrated (0.0134s) ====================
== 20131210163702 AddWordCountToPosts: migrating ==============================
-- add_column(:posts, :word_count, :integer)
-> 0.0003s
-- add_column(:topics, :word_count, :integer)
-> 0.0003s
== 20131210163702 AddWordCountToPosts: migrated (0.0007s) =====================
== 20131210181901 MigrateWordCounts: migrating ================================
-- execute("SELECT id FROM posts WHERE word_count IS NULL LIMIT 500")
-> 0.0003s
-- execute("SELECT id FROM topics WHERE word_count IS NULL LIMIT 500")
-> 0.0003s
== 20131210181901 MigrateWordCounts: migrated (0.0007s) =======================
== 20131210234530 RenameVersionColumn: migrating ==============================
-- add_column(:posts, :version, :integer, {:default=>1, :null=>false})
-> 0.0210s
-- execute("UPDATE posts SET version = cached_version")
-> 0.0003s
-- remove_column(:posts, :cached_version)
-> 0.0003s
== 20131210234530 RenameVersionColumn: migrated (0.0217s) =====================
== 20131212225511 AddPostCountStatsColumnsToCategories: migrating =============
-- change_table(:categories)
-> 0.0008s
== 20131212225511 AddPostCountStatsColumnsToCategories: migrated (0.0008s) ====
== 20131216164557 MakePositionNullableInCategories: migrating =================
-- change_column(:categories, :position, :integer, {:null=>true})
-> 0.0005s
== 20131216164557 MakePositionNullableInCategories: migrated (0.0005s) ========
== 20131217174004 CreateTopicEmbeds: migrating ================================
-- create_table(:topic_embeds, {:force=>true})
-> 0.0067s
-- add_index(:topic_embeds, :embed_url, {:unique=>true})
-> 0.0040s
== 20131217174004 CreateTopicEmbeds: migrated (0.0108s) =======================
== 20131219203905 AddCookMethodToPosts: migrating =============================
-- add_column(:posts, :cook_method, :integer, {:default=>1, :null=>false})
-> 0.0137s
== 20131219203905 AddCookMethodToPosts: migrated (0.0138s) ====================
== 20131223171005 CreateTopTopics: migrating ==================================
-- create_table(:top_topics, {:force=>true})
-> 0.0066s
-- add_index(:top_topics, :topic_id, {:unique=>true})
-> 0.0033s
-- add_index(:top_topics, :yearly_posts_count, {:order=>"desc"})
-> 0.0033s
-- add_index(:top_topics, :yearly_views_count, {:order=>"desc"})
-> 0.0032s
-- add_index(:top_topics, :yearly_likes_count, {:order=>"desc"})
-> 0.0034s
-- add_index(:top_topics, :monthly_posts_count, {:order=>"desc"})
-> 0.0032s
-- add_index(:top_topics, :monthly_views_count, {:order=>"desc"})
-> 0.0034s
-- add_index(:top_topics, :monthly_likes_count, {:order=>"desc"})
-> 0.0031s
-- add_index(:top_topics, :weekly_posts_count, {:order=>"desc"})
-> 0.0036s
-- add_index(:top_topics, :weekly_views_count, {:order=>"desc"})
-> 0.0043s
-- add_index(:top_topics, :weekly_likes_count, {:order=>"desc"})
-> 0.0034s
-- add_index(:top_topics, :daily_posts_count, {:order=>"desc"})
-> 0.0086s
-- add_index(:top_topics, :daily_views_count, {:order=>"desc"})
-> 0.0088s
-- add_index(:top_topics, :daily_likes_count, {:order=>"desc"})
-> 0.0031s
== 20131223171005 CreateTopTopics: migrated (0.0616s) =========================
== 20131227164338 AddScoresToTopTopics: migrating =============================
-- add_column(:top_topics, :daily_score, :float)
-> 0.0003s
-- add_column(:top_topics, :weekly_score, :float)
-> 0.0002s
-- add_column(:top_topics, :monthly_score, :float)
-> 0.0002s
-- add_column(:top_topics, :yearly_score, :float)
-> 0.0002s
== 20131227164338 AddScoresToTopTopics: migrated (0.0011s) ====================
== 20131229221725 AddWatchNewTopicsToUsers: migrating =========================
-- add_column(:users, :watch_new_topics, :boolean, {:default=>false, :null=>false})
-> 0.0189s
== 20131229221725 AddWatchNewTopicsToUsers: migrated (0.0190s) ================
== 20131230010239 AddLastEmailedPostNumberToTopicUser: migrating ==============
-- add_column(:topic_users, :last_emailed_post_number, :integer)
-> 0.0003s
== 20131230010239 AddLastEmailedPostNumberToTopicUser: migrated (0.0004s) =====
== 20140101235747 AddCategoryUsers: migrating =================================
-- create_table(:category_users)
-> 0.0034s
== 20140101235747 AddCategoryUsers: migrated (0.0035s) ========================
== 20140102104229 AddAliasLevelToGroups: migrating ============================
-- add_column(:groups, :alias_level, :integer, {:default=>0})
-> 0.0085s
== 20140102104229 AddAliasLevelToGroups: migrated (0.0086s) ===================
== 20140102194802 RemoveDefaultFromExternalLinksInNewTab: migrating ===========
-- change_column_default(:users, :external_links_in_new_tab, nil)
-> 0.0015s
== 20140102194802 RemoveDefaultFromExternalLinksInNewTab: migrated (0.0015s) ==
== 20140107220141 RemoveEnableWideCategoryList: migrating =====================
-- execute("DELETE FROM site_settings WHERE name = 'enable_wide_category_list'")
-> 0.0002s
== 20140107220141 RemoveEnableWideCategoryList: migrated (0.0002s) ============
== 20140109205940 RenameFavoritesToStarred: migrating =========================
-- execute("UPDATE site_settings SET name = 'max_stars_per_day' where name = 'max_favorites_per_day'")
-> 0.0002s
-- execute("UPDATE site_settings SET value = REPLACE(value, '|favorited', '|starred') where name = 'top_menu'")
-> 0.0002s
== 20140109205940 RenameFavoritesToStarred: migrated (0.0004s) ================
== 20140116170655 DropHotTopics: migrating ====================================
-- drop_table(:hot_topics)
-> 0.0006s
== 20140116170655 DropHotTopics: migrated (0.0006s) ===========================
== 20140120155706 AddLoungeCategory: migrating ================================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\n VALUES ('lounge_category_id', 3, 2, now(), now())")
-> 0.0003s
== 20140120155706 AddLoungeCategory: migrated (0.1182s) =======================
== 20140121204628 AddInvalidatedAtToInvites: migrating ========================
-- add_column(:invites, :invalidated_at, :datetime)
-> 0.0004s
== 20140121204628 AddInvalidatedAtToInvites: migrated (0.0004s) ===============
== 20140122043508 AddMetaCategory: migrating ==================================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\n VALUES ('meta_category_id', 3, 3, now(), now())")
-> 0.0002s
== 20140122043508 AddMetaCategory: migrated (0.0037s) =========================
== 20140124202427 AddPostsReadToUserVisits: migrating =========================
-- add_column(:user_visits, :posts_read, :integer, {:default=>0})
-> 0.0100s
-- execute("UPDATE user_visits SET posts_read = 1")
-> 0.0002s
== 20140124202427 AddPostsReadToUserVisits: migrated (0.0102s) ================
== 20140129164541 RemoveCategoryHotness: migrating ============================
-- remove_column(:categories, :hotness)
-> 0.0004s
== 20140129164541 RemoveCategoryHotness: migrated (0.0004s) ===================
== 20140206044818 AddLocaleToUser: migrating ==================================
-- add_column(:users, :locale, :string, {:limit=>10})
-> 0.0004s
== 20140206044818 AddLocaleToUser: migrated (0.0004s) =========================
== 20140206195001 AddDefaultsToCategoryPostsAndTopicsFields: migrating ========
-- change_column_default(:categories, :posts_week, 0)
-> 0.0011s
-- change_column_default(:categories, :posts_month, 0)
-> 0.0010s
-- change_column_default(:categories, :posts_year, 0)
-> 0.0010s
-- change_column_default(:categories, :topics_week, 0)
-> 0.0010s
-- change_column_default(:categories, :topics_month, 0)
-> 0.0010s
-- change_column_default(:categories, :topics_year, 0)
-> 0.0010s
== 20140206195001 AddDefaultsToCategoryPostsAndTopicsFields: migrated (0.0062s)
== 20140206215029 AddMailingListModeToUsers: migrating ========================
-- rename_column(:users, :watch_new_topics, :mailing_list_mode)
-> 0.0021s
== 20140206215029 AddMailingListModeToUsers: migrated (0.0021s) ===============
== 20140210194146 AddPrimaryGroupIdToUsers: migrating =========================
-- add_column(:users, :primary_group_id, :integer, {:null=>true})
-> 0.0004s
== 20140210194146 AddPrimaryGroupIdToUsers: migrated (0.0004s) ================
== 20140211230222 MoveCasSettings: migrating ==================================
-- drop_table(:cas_user_infos)
-> 0.0007s
== 20140211230222 MoveCasSettings: migrated (0.0053s) =========================
== 20140211234523 AddTargetsTopicToPostActions: migrating =====================
-- add_column(:post_actions, :targets_topic, :boolean, {:default=>false})
-> 0.0106s
== 20140211234523 AddTargetsTopicToPostActions: migrated (0.0106s) ============
== 20140214151255 AddSkippedToEmailLogs: migrating ============================
-- add_column(:email_logs, :skipped, :boolean, {:default=>:false})
-> 0.0123s
-- add_column(:email_logs, :skipped_reason, :string)
-> 0.0002s
-- add_index(:email_logs, [:skipped, :created_at])
-> 0.0033s
== 20140214151255 AddSkippedToEmailLogs: migrated (0.0160s) ===================
== 20140220160510 RenameSiteSettings: migrating ===============================
-- execute("UPDATE site_settings SET name = 'allow_restore' WHERE name = 'allow_import'")
-> 0.0002s
-- execute("UPDATE site_settings SET name = 'topics_per_period_in_top_summary' WHERE name = 'topics_per_period_in_summary'")
-> 0.0001s
== 20140220160510 RenameSiteSettings: migrated (0.0004s) ======================
== 20140220163213 RenameDeleteUserMaxAge: migrating ===========================
-- execute("UPDATE site_settings SET name = 'delete_user_max_post_age' WHERE name = 'delete_user_max_age'")
-> 0.0002s
== 20140220163213 RenameDeleteUserMaxAge: migrated (0.0002s) ==================
== 20140224232712 AddProfileBackgroundToUser: migrating =======================
-- add_column(:users, :profile_background, :string, {:limit=>255})
-> 0.0004s
== 20140224232712 AddProfileBackgroundToUser: migrated (0.0004s) ==============
== 20140224232913 AddSingleSignOnRecords: migrating ===========================
-- create_table(:single_sign_on_records)
-> 0.0061s
-- add_index(:single_sign_on_records, :external_id, {:unique=>true})
-> 0.0032s
== 20140224232913 AddSingleSignOnRecords: migrated (0.0093s) ==================
== 20140227104930 AddCustomEmailInToCategories: migrating =====================
-- add_column(:categories, :email_in, :string, {:null=>true})
-> 0.0003s
-- add_column(:categories, :email_in_allow_strangers, :boolean, {:default=>false})
-> 0.0163s
-- add_index(:categories, :email_in, {:unique=>true})
-> 0.0079s
== 20140227104930 AddCustomEmailInToCategories: migrated (0.0247s) ============
== 20140227201005 AddStaffCategory: migrating =================================
-- execute("INSERT INTO site_settings(name, data_type, value, created_at, updated_at)\n VALUES ('staff_category_id', 3, 4, now(), now())")
-> 0.0002s
== 20140227201005 AddStaffCategory: migrated (0.0015s) ========================
== 20140228005443 AddExternalUsernameToSingleSignOnRecord: migrating ==========
-- add_column(:single_sign_on_records, :external_username, :string)
-> 0.0004s
== 20140228005443 AddExternalUsernameToSingleSignOnRecord: migrated (0.0004s) =
== 20140228173431 AddExternalEmailAndExternalNameToSingleSignOnRecord: migrating
-- add_column(:single_sign_on_records, :external_email, :string)
-> 0.0003s
-- add_column(:single_sign_on_records, :external_name, :string)
-> 0.0002s
== 20140228173431 AddExternalEmailAndExternalNameToSingleSignOnRecord: migrated (0.0006s)
== 20140228205743 AddAdminOnlyToUserHistories: migrating ======================
-- add_column(:user_histories, :admin_only, :boolean, {:default=>false})
-> 0.0150s
-- execute("UPDATE user_histories SET admin_only = true WHERE action = 3")
-> 0.0003s
== 20140228205743 AddAdminOnlyToUserHistories: migrated (0.0189s) =============
== 20140303185354 AddNewSinceToUserStats: migrating ===========================
-- add_column(:user_stats, :new_since, :datetime)
-> 0.0003s
-- execute("UPDATE user_stats AS us\n SET new_since = u.created_at\n FROM users AS u\n WHERE u.id = us.user_id")
-> 0.0006s
-- change_column(:user_stats, :new_since, :datetime, {:null=>false})
-> 0.0004s
== 20140303185354 AddNewSinceToUserStats: migrated (0.0014s) ==================
== 20140304200606 CreateBadgeTypes: migrating =================================
-- create_table(:badge_types)
-> 0.0065s
-- add_index(:badge_types, [:name], {:unique=>true})
-> 0.0034s
== 20140304200606 CreateBadgeTypes: migrated (0.0100s) ========================
== 20140304201403 CreateBadges: migrating =====================================
-- create_table(:badges)
-> 0.0092s
-- add_index(:badges, [:name], {:unique=>true})
-> 0.0032s
== 20140304201403 CreateBadges: migrated (0.0124s) ============================
== 20140305100909 CreateUserBadges: migrating =================================
-- create_table(:user_badges)
-> 0.0063s
-- add_index(:user_badges, [:badge_id, :user_id], {:unique=>true})
-> 0.0031s
== 20140305100909 CreateUserBadges: migrated (0.0094s) ========================
== 20140306223522 MoveTopicRevisionsToPostRevisions: migrating ================
-- execute("\n INSERT INTO post_revisions(user_id, post_id, modifications, number, created_at, updated_at)\n SELECT tr.user_id, p.id, tr.modifications, tr.number, tr.created_at, tr.updated_at\n FROM topic_revisions tr\n JOIN topics t ON t.id = tr.topic_id\n JOIN posts p ON p.topic_id = t.id AND p.post_number = 1\n\n")
-> 0.0010s
-- execute("\n UPDATE post_revisions r SET number = 2 + (\n SELECT COUNT(*) FROM post_revisions r2\n WHERE r2.post_id = r.post_id AND r2.created_at < r.created_at\n )\n\n")
-> 0.0003s
-- execute("\n UPDATE posts p SET version = 1 + (\n SELECT COUNT(*) FROM post_revisions r\n WHERE r.post_id = p.id\n )\n\n")
-> 0.0003s
-- execute("\n DROP TABLE topic_revisions\n\n")
-> 0.0006s
== 20140306223522 MoveTopicRevisionsToPostRevisions: migrated (0.0024s) =======
== 20140318150412 AddExcerptToTopics: migrating ===============================
-- add_column(:topics, :excerpt, :string, {:limit=>1000})
-> 0.0004s
-- execute("SELECT id FROM topics WHERE pinned_at IS NOT NULL")
-> 0.0002s
== 20140318150412 AddExcerptToTopics: migrated (0.0006s) ======================
== 20140318203559 AddCreatedAtIndexToPosts: migrating =========================
-- execute("CREATE INDEX idx_posts_created_at_topic_id ON posts(created_at, topic_id) WHERE deleted_at IS NULL")
-> 0.0026s
-- add_column(:categories, :topics_day, :integer, {:default=>0})
-> 0.0229s
-- add_column(:categories, :posts_day, :integer, {:default=>0})
-> 0.0140s
-- execute("DROP INDEX index_topics_on_deleted_at_and_visible_and_archetype_and_id")
-> 0.0003s
-- add_index(:topics, [:deleted_at, :visible, :archetype, :category_id, :id], {:name=>"idx_topics_front_page"})
-> 0.0034s
== 20140318203559 AddCreatedAtIndexToPosts: migrated (0.0433s) ================
== 20140320042653 FacebookUserInfosUsernameCanBeNil: migrating ================
-- change_column("facebook_user_infos", :username, :string, {:null=>true})
-> 0.0004s
== 20140320042653 FacebookUserInfosUsernameCanBeNil: migrated (0.0005s) =======
== 20140402201432 MakeContentSha1Nullable: migrating ==========================
-- change_column(:topic_embeds, :content_sha1, :string, {:limit=>40, :null=>true})
-> 0.0004s
== 20140402201432 MakeContentSha1Nullable: migrated (0.0005s) =================
== 20140404143501 AddTitleToTopicLinks: migrating =============================
-- add_column(:topic_links, :title, :string)
-> 0.0003s
-- add_column(:topic_links, :crawled_at, :datetime)
-> 0.0002s
== 20140404143501 AddTitleToTopicLinks: migrated (0.0006s) ====================
== 20140407055830 AddPinnedGloballyToTopics: migrating ========================
-- add_column(:topics, :pinned_globally, :boolean, {:null=>false, :default=>false})
-> 0.0150s
-- execute("UPDATE topics set pinned_globally = 't' where category_id = (\n SELECT value::int FROM site_settings WHERE name = 'uncategorized_category_id') AND pinned_at IS NOT NULL\n ")
-> 0.0004s
== 20140407055830 AddPinnedGloballyToTopics: migrated (0.0154s) ===============
== 20140407202158 SiteSettingCommaToPipe: migrating ===========================
-- execute(" UPDATE site_settings\n SET value = replace(value, ',', '|')\n WHERE name = 'white_listed_spam_host_domains'\n ;\n")
-> 0.0002s
-- execute(" UPDATE site_settings\n SET value = replace(value, ',', '|')\n WHERE name = 'exclude_rel_nofollow_domains'\n ;\n")
-> 0.0002s
== 20140407202158 SiteSettingCommaToPipe: migrated (0.0004s) ==================
== 20140408061512 AddWikiToPosts: migrating ===================================
-- add_column(:posts, :wiki, :boolean, {:default=>false, :null=>false})
-> 0.0136s
== 20140408061512 AddWikiToPosts: migrated (0.0137s) ==========================
== 20140408152401 AddDefaultValueToTopTopicScores: migrating ==================
-- change_column_default(:top_topics, :daily_score, 0)
-> 0.0011s
-- change_column_default(:top_topics, :weekly_score, 0)
-> 0.0010s
-- change_column_default(:top_topics, :monthly_score, 0)
-> 0.0009s
-- change_column_default(:top_topics, :yearly_score, 0)
-> 0.0009s
== 20140408152401 AddDefaultValueToTopTopicScores: migrated (0.0040s) =========
== 20140415054717 AllowLongerUsernames: migrating =============================
-- change_column(:users, :username, :string, {:limit=>60})
-> 0.0006s
-- change_column(:users, :username_lower, :string, {:limit=>60})
-> 0.0006s
== 20140415054717 AllowLongerUsernames: migrated (0.0013s) ====================
== 20140416202746 CreateColorSchemes: migrating ===============================
-- create_table(:color_schemes)
-> 0.0103s
== 20140416202746 CreateColorSchemes: migrated (0.0104s) ======================
== 20140416202801 CreateColorSchemeColors: migrating ==========================
-- create_table(:color_scheme_colors)
-> 0.0105s
-- add_index(:color_scheme_colors, [:color_scheme_id])
-> 0.0033s
== 20140416202801 CreateColorSchemeColors: migrated (0.0139s) =================
== 20140416235757 RemoveColorHexcodeFromBadgeTypes: migrating =================
-- remove_column(:badge_types, :color_hexcode, :string)
-> 0.0003s
== 20140416235757 RemoveColorHexcodeFromBadgeTypes: migrated (0.0003s) ========
== 20140421235646 AddUserCustomFields: migrating ==============================
-- create_table(:user_custom_fields)
-> 0.0061s
-- add_index(:user_custom_fields, [:user_id, :name])
-> 0.0034s
== 20140421235646 AddUserCustomFields: migrated (0.0096s) =====================
== 20140422195623 AddVisibileToGroups: migrating ==============================
-- add_column(:groups, :visible, :boolean, {:default=>true, :null=>false})
-> 0.0087s
== 20140422195623 AddVisibileToGroups: migrated (0.0087s) =====================
== 20140425125742 AddCustomFields: migrating ==================================
-- create_table(:category_custom_fields)
-> 0.0058s
-- create_table(:group_custom_fields)
-> 0.0057s
-- create_table(:post_custom_fields)
-> 0.0057s
-- add_index(:category_custom_fields, [:category_id, :name])
-> 0.0033s
-- add_index(:group_custom_fields, [:group_id, :name])
-> 0.0031s
-- add_index(:post_custom_fields, [:post_id, :name])
-> 0.0030s
== 20140425125742 AddCustomFields: migrated (0.0269s) =========================
== 20140425135354 AddTopicCustomFields: migrating =============================
-- create_table(:topic_custom_fields)
-> 0.0056s
-- add_index(:topic_custom_fields, [:topic_id, :name])
-> 0.0032s
-- execute(" INSERT INTO topic_custom_fields(topic_id, name, value)\n SELECT id, (each(meta_data)).key, (each(meta_data)).value\n FROM topics WHERE meta_data <> ''\n")
-> 0.0023s
-- remove_column(:topics, :meta_data)
-> 0.0003s
== 20140425135354 AddTopicCustomFields: migrated (0.0115s) ====================
== 20140425172618 AddTitleableToBadges: migrating =============================
-- add_column(:badges, :allow_title, :boolean, {:null=>false, :default=>false})
-> 0.0092s
== 20140425172618 AddTitleableToBadges: migrated (0.0093s) ====================
== 20140429175951 AddRegistrationIpAddressToUsers: migrating ==================
-- add_column(:users, :registration_ip_address, :inet)
-> 0.0004s
== 20140429175951 AddRegistrationIpAddressToUsers: migrated (0.0004s) =========
== 20140504174212 IncrementReservedTrustLevelBadgeIds: migrating ==============
-- execute("ALTER SEQUENCE badges_id_seq START WITH 100")
-> 0.0002s
== 20140504174212 IncrementReservedTrustLevelBadgeIds: migrated (0.0101s) =====
== 20140505145918 AddLastRedirectedToTopAtToUsers: migrating ==================
-- add_column(:users, :last_redirected_to_top_at, :datetime)
-> 0.0004s
== 20140505145918 AddLastRedirectedToTopAtToUsers: migrated (0.0005s) =========
== 20140506200235 RemoveSeedColorScheme: migrating ============================
-- execute("DELETE FROM color_schemes WHERE id = 1")
-> 0.0003s
-- execute("DELETE FROM color_scheme_colors WHERE color_scheme_id = 1")
-> 0.0003s
== 20140506200235 RemoveSeedColorScheme: migrated (0.0006s) ===================
== 20140507173327 RemoveOpacityFromColorSchemeColors: migrating ===============
-- remove_column(:color_scheme_colors, :opacity)
-> 0.0003s
== 20140507173327 RemoveOpacityFromColorSchemeColors: migrated (0.0003s) ======
== 20140508053815 AddInvitedGroups: migrating =================================
-- create_table(:invited_groups)
-> 0.0046s
== 20140508053815 AddInvitedGroups: migrated (0.0047s) ========================
== 20140515220111 InitFixedCategoryPositionsValue: migrating ==================
== 20140515220111 InitFixedCategoryPositionsValue: migrated (0.0003s) =========
== 20140520062826 AddMultipleAwardToBadges: migrating =========================
-- add_column(:badges, :multiple_grant, :boolean, {:default=>false, :null=>false})
-> 0.0093s
-- remove_index(:user_badges, {:column=>[:badge_id, :user_id]})
-> 0.0009s
-- add_index(:user_badges, [:badge_id, :user_id])
-> 0.0033s
== 20140520062826 AddMultipleAwardToBadges: migrated (0.0137s) ================
== 20140520063859 RemoveHasCustomAvatarFromUserStats: migrating ===============
-- remove_column(:user_stats, :has_custom_avatar)
-> 0.0003s
== 20140520063859 RemoveHasCustomAvatarFromUserStats: migrated (0.0003s) ======
== 20140521192142 CreateGoogleUserInfos: migrating ============================
-- create_table(:google_user_infos)
-> 0.0058s
-- add_index(:google_user_infos, :user_id, {:unique=>true})
-> 0.0030s
-- add_index(:google_user_infos, :google_user_id, {:unique=>true})
-> 0.0032s
== 20140521192142 CreateGoogleUserInfos: migrated (0.0121s) ===================
== 20140521220115 GoogleOpenidDefaultHasChanged: migrating ====================
== 20140521220115 GoogleOpenidDefaultHasChanged: migrated (0.0003s) ===========
== 20140522003151 AddUserAvatars: migrating ===================================
-- create_table(:user_avatars)
-> 0.0036s
-- add_index(:user_avatars, [:user_id])
-> 0.0032s
-- execute(" INSERT INTO user_avatars(user_id, custom_upload_id)\n SELECT id, uploaded_avatar_id\n FROM users\n")
-> 0.0002s
-- execute(" UPDATE users SET uploaded_avatar_id = NULL\n WHERE NOT use_uploaded_avatar\n")
-> 0.0002s
== 20140522003151 AddUserAvatars: migrated (0.0073s) ==========================
== 20140525233953 RemoveUploadedAvatarTemplateFromUsers: migrating ============
-- remove_column(:users, :uploaded_avatar_template)
-> 0.0003s
== 20140525233953 RemoveUploadedAvatarTemplateFromUsers: migrated (0.0003s) ===
== 20140526185749 ChangeCategoryUniqunessContstraint: migrating ===============
-- remove_index(:categories, {:name=>"index_categories_on_name"})
-> 0.0009s
-- add_index(:categories, [:parent_category_id, :name], {:unique=>true})
-> 0.0046s
== 20140526185749 ChangeCategoryUniqunessContstraint: migrated (0.0056s) ======
== 20140526201939 AddDisableJumpReplyToUsers: migrating =======================
-- add_column(:users, :disable_jump_reply, :boolean, {:default=>false, :null=>false})
-> 0.0205s
== 20140526201939 AddDisableJumpReplyToUsers: migrated (0.0206s) ==============
== 20140527163207 CreateUserProfiles: migrating ===============================
-- create_table(:user_profiles, {:id=>false})
-> 0.0057s
-- execute("ALTER TABLE user_profiles ADD PRIMARY KEY (user_id)")
-> 0.0024s
-- execute("INSERT INTO user_profiles (user_id) SELECT id FROM users")
-> 0.0004s
== 20140527163207 CreateUserProfiles: migrated (0.0085s) ======================
== 20140527233225 AddSystemSavatarVersionToUserAvatars: migrating =============
-- add_column(:user_avatars, :system_avatar_version, :integer, {:default=>0})
-> 0.0062s
== 20140527233225 AddSystemSavatarVersionToUserAvatars: migrated (0.0063s) ====
== 20140528015354 AddBakedAtToPosts: migrating ================================
-- add_column(:posts, :baked_at, :datetime)
-> 0.0004s
== 20140528015354 AddBakedAtToPosts: migrated (0.0004s) =======================
== 20140529045508 RemoveUseUploadedAvatarFromUser: migrating ==================
-- remove_column(:users, :use_uploaded_avatar)
-> 0.0004s
== 20140529045508 RemoveUseUploadedAvatarFromUser: migrated (0.0004s) =========
== 20140530002535 RemoveSystemAvatarsFromUserAvatars: migrating ===============
-- execute("UPDATE users SET uploaded_avatar_id = NULL WHERE uploaded_avatar_id IN (\n SELECT system_upload_id FROM user_avatars\n )")
-> 0.0005s
-- remove_column(:user_avatars, :system_upload_id)
-> 0.0003s
-- remove_column(:user_avatars, :system_avatar_version)
-> 0.0002s
== 20140530002535 RemoveSystemAvatarsFromUserAvatars: migrated (0.0155s) ======
== 20140530043913 AddBakedVersionToPost: migrating ============================
-- add_column(:posts, :baked_version, :integer)
-> 0.0004s
== 20140530043913 AddBakedVersionToPost: migrated (0.0005s) ===================
== 20140604145431 DisableExternalAuthsByDefault: migrating ====================
== 20140604145431 DisableExternalAuthsByDefault: migrated (0.0002s) ===========
== 20140607035234 AddWebsiteToUserProfiles: migrating =========================
-- add_column(:user_profiles, :website, :string)
-> 0.0003s
-- execute("UPDATE user_profiles SET website = (SELECT website FROM users where user_profiles.user_id = users.id)")
-> 0.0003s
-- remove_column(:users, :website)
-> 0.0003s
== 20140607035234 AddWebsiteToUserProfiles: migrated (0.0010s) ================
== 20140610012414 AddPostIdToUserBadges: migrating ============================
-- add_column(:user_badges, :post_id, :integer)
-> 0.0003s
== 20140610012414 AddPostIdToUserBadges: migrated (0.0003s) ===================
== 20140610012833 AddIconToBadges: migrating ==================================
-- add_column(:badges, :icon, :string, {:default=>"fa-certificate"})
-> 0.0101s
== 20140610012833 AddIconToBadges: migrated (0.0102s) =========================
== 20140610034314 MoveBioToUserProfiles: migrating ============================
-- add_column(:user_profiles, :bio_raw, :text)
-> 0.0003s
-- add_column(:user_profiles, :bio_cooked, :text)
-> 0.0002s
-- execute("UPDATE user_profiles SET bio_raw = subquery.bio_raw, bio_cooked = subquery.bio_cooked FROM (\n SELECT bio_raw, bio_cooked, id FROM users\n ) as subquery WHERE user_profiles.user_id = subquery.id")
-> 0.0004s
-- remove_column(:users, :bio_raw)
-> 0.0002s
-- remove_column(:users, :bio_cooked)
-> 0.0002s
== 20140610034314 MoveBioToUserProfiles: migrated (0.0015s) ===================
== 20140612010718 MoveProfileBackgroundToUserProfiles: migrating ==============
-- add_column(:user_profiles, :profile_background, :string, {:limit=>255})
-> 0.0003s
-- execute("UPDATE user_profiles SET profile_background = (SELECT profile_background FROM users WHERE user_profiles.user_id = users.id)")
-> 0.0003s
-- remove_column(:users, :profile_background)
-> 0.0002s
== 20140612010718 MoveProfileBackgroundToUserProfiles: migrated (0.0009s) =====
== 20140617053829 AddNotificationIdToUserBadge: migrating =====================
-- add_column(:user_badges, :notification_id, :integer)
-> 0.0003s
== 20140617053829 AddNotificationIdToUserBadge: migrated (0.0003s) ============
== 20140617080955 RenameRegisteredUsers: migrating ============================
-- execute("update groups set name = 'trust_level_0' where name = 'registered_users' and id = 10")
-> 0.0004s
== 20140617080955 RenameRegisteredUsers: migrated (0.0004s) ===================
== 20140617193351 AddPostIdIndexOnTopicLinks: migrating =======================
-- add_index(:topic_links, :post_id)
-> 0.0034s
== 20140617193351 AddPostIdIndexOnTopicLinks: migrated (0.0034s) ==============
== 20140618001820 DontAutoMutoTopics: migrating ===============================
-- execute("DELETE FROM topic_users WHERE notification_level = 0 and notifications_reason_id =7 AND first_visited_at IS NULL")
-> 0.0003s
-- execute("UPDATE topic_users SET notification_level = 1,\n notifications_reason_id = NULL\n WHERE notification_level = 0 AND notifications_reason_id =7")
-> 0.0002s
== 20140618001820 DontAutoMutoTopics: migrated (0.0006s) ======================
== 20140618163511 AddDismissedBannerKeyToUserProfile: migrating ===============
-- add_column(:user_profiles, :dismissed_banner_key, :integer, {:nullable=>true})
-> 0.0003s
== 20140618163511 AddDismissedBannerKeyToUserProfile: migrated (0.0003s) ======
== 20140620184031 AddHiddenAtToPosts: migrating ===============================
-- add_column(:posts, :hidden_at, :timestamp)
-> 0.0004s
== 20140620184031 AddHiddenAtToPosts: migrated (0.0004s) ======================
== 20140623195618 FixCategoriesConstraint: migrating ==========================
-- remove_index(:categories, {:name=>"index_categories_on_parent_category_id_and_name"})
-> 0.0012s
-- execute("DELETE FROM categories WHERE id IN (SELECT id FROM (SELECT id, row_number() over (partition BY parent_category_id, name ORDER BY id) AS rnum FROM categories) t WHERE t.rnum > 1)")
-> 0.0004s
-- execute("CREATE UNIQUE INDEX unique_index_categories_on_name ON categories (COALESCE(parent_category_id, -1), name)")
-> 0.0025s
== 20140623195618 FixCategoriesConstraint: migrated (0.0043s) =================
== 20140624044600 AddRawDataToSearch: migrating ===============================
-- add_column(:post_search_data, :raw_data, :text)
-> 0.0003s
-- add_column(:user_search_data, :raw_data, :text)
-> 0.0002s
-- add_column(:category_search_data, :raw_data, :text)
-> 0.0003s
-- add_column(:post_search_data, :locale, :string)
-> 0.0002s
-- add_column(:user_search_data, :locale, :text)
-> 0.0002s
-- add_column(:category_search_data, :locale, :text)
-> 0.0002s
== 20140624044600 AddRawDataToSearch: migrated (0.0015s) ======================
== 20140627193814 AddImagesToCategories: migrating ============================
-- add_column(:categories, :logo_url, :string)
-> 0.0003s
-- add_column(:categories, :background_url, :string)
-> 0.0002s
== 20140627193814 AddImagesToCategories: migrated (0.0006s) ===================
== 20140703022838 AddFieldsToBadges: migrating ================================
-- add_column(:badges, :listable, :boolean, {:default=>true})
-> 0.0098s
-- add_column(:badges, :target_posts, :boolean, {:default=>false})
-> 0.0123s
-- add_column(:badges, :query, :text)
-> 0.0002s
== 20140703022838 AddFieldsToBadges: migrated (0.0224s) =======================
== 20140705081453 IndexUserBadges: migrating ==================================
-- execute("DELETE FROM user_badges USING user_badges ub2\n WHERE user_badges.badge_id = ub2.badge_id AND\n user_badges.user_id = ub2.user_id AND\n user_badges.post_id IS NOT NULL AND\n user_badges.id < ub2.id\n ")
-> 0.0006s
-- add_index(:user_badges, [:badge_id, :user_id, :post_id], {:unique=>true, :where=>"post_id IS NOT NULL"})
-> 0.0039s
== 20140705081453 IndexUserBadges: migrated (0.0046s) =========================
== 20140707071913 AddSelfEditsToPosts: migrating ==============================
-- add_column(:posts, :self_edits, :integer, {:null=>false, :default=>0})
-> 0.0141s
-- execute("\n UPDATE posts p SET self_edits = (SELECT COUNT(*) FROM post_revisions pr WHERE pr.post_id = p.id AND pr.user_id=p.user_id)\n ")
-> 0.0004s
== 20140707071913 AddSelfEditsToPosts: migrated (0.0146s) =====================
== 20140710005023 AddBadgePostsAndTopicsView: migrating =======================
-- add_column(:categories, :allow_badges, :boolean, {:default=>true, :null=>false})
-> 0.0147s
-- execute("CREATE VIEW badge_posts AS\n SELECT p.*\n FROM posts p\n JOIN topics t ON t.id = p.topic_id\n JOIN categories c ON c.id = t.category_id\n WHERE c.allow_badges AND\n p.deleted_at IS NULL AND\n t.deleted_at IS NULL AND\n t.visible")
-> 0.0064s
== 20140710005023 AddBadgePostsAndTopicsView: migrated (0.0211s) ==============
== 20140710224658 AddIsQuoteToTopicLinks: migrating ===========================
-- add_column(:topic_links, :quote, :boolean, {:default=>false, :null=>false})
-> 0.0129s
-- execute("\n UPDATE topic_links\n SET quote = true\n WHERE id IN (\n SELECT l.id\n FROM topic_links l\n JOIN posts p ON p.id = l.post_id\n JOIN posts lp ON l.link_post_id = lp.id\n WHERE p.raw LIKE '%[quote=%post:' ||\n lp.post_number::varchar || ',%topic:' ||\n lp.topic_id::varchar || '%]%[/quote]%'\n )")
-> 0.0008s
== 20140710224658 AddIsQuoteToTopicLinks: migrated (0.0138s) ==================
== 20140711063215 AddReadFaqToUserStats: migrating ============================
-- add_column(:user_stats, :read_faq, :datetime)
-> 0.0003s
== 20140711063215 AddReadFaqToUserStats: migrated (0.0004s) ===================
== 20140711143146 RemoveNotNullFromEmail: migrating ===========================
-- execute("ALTER TABLE invites ALTER COLUMN email DROP NOT NULL")
-> 0.0002s
== 20140711143146 RemoveNotNullFromEmail: migrated (0.0003s) ==================
== 20140711193923 RemoveEmailInAddressSetting: migrating ======================
== 20140711193923 RemoveEmailInAddressSetting: migrated (0.0004s) =============
== 20140711233329 BadgesOnlyOnPublicCategories: migrating =====================
-- execute("DROP VIEW badge_posts")
-> 0.0007s
-- execute("CREATE VIEW badge_posts AS\n SELECT p.*\n FROM posts p\n JOIN topics t ON t.id = p.topic_id\n JOIN categories c ON c.id = t.category_id\n WHERE c.allow_badges AND\n p.deleted_at IS NULL AND\n t.deleted_at IS NULL AND\n NOT c.read_restricted AND\n t.visible")
-> 0.0029s
== 20140711233329 BadgesOnlyOnPublicCategories: migrated (0.0037s) ============
== 20140714060646 AddEnabledToBadges: migrating ===============================
-- add_column(:badges, :enabled, :boolean, {:default=>true, :null=>false})
-> 0.0154s
== 20140714060646 AddEnabledToBadges: migrated (0.0155s) ======================
== 20140715013018 CorrectPostNumberIndex: migrating ===========================
-- execute(" UPDATE posts SET post_number = post_number + 1\n WHERE id IN (\n SELECT p1.id\n FROM posts p1\n JOIN\n (\n SELECT post_number, topic_id, min(id) min_id\n FROM posts\n GROUP BY post_number, topic_id\n HAVING COUNT(*) > 1\n ) pp ON p1.topic_id = pp.topic_id AND\n p1.post_number >= pp.post_number AND\n p1.id <> pp.min_id\n )\n")
-> 0.0006s
-- remove_index(:posts, [:topic_id, :post_number])
-> 0.0009s
-- add_index(:posts, [:topic_id, :post_number], {:unique=>true})
-> 0.0050s
== 20140715013018 CorrectPostNumberIndex: migrated (0.0066s) ==================
== 20140715051412 AddAutoRevokeToBadges: migrating ============================
-- add_column(:badges, :auto_revoke, :boolean, {:default=>true, :null=>false})
-> 0.0105s
== 20140715051412 AddAutoRevokeToBadges: migrated (0.0105s) ===================
== 20140715055242 AddQuotedPosts: migrating ===================================
-- create_table(:quoted_posts)
-> 0.0037s
-- add_index(:quoted_posts, [:post_id, :quoted_post_id], {:unique=>true})
-> 0.0035s
-- add_index(:quoted_posts, [:quoted_post_id, :post_id], {:unique=>true})
-> 0.0035s
-- execute(" SELECT id, cooked\n FROM posts\n WHERE raw like '%quote=%' AND id > 0\n ORDER BY id\n LIMIT 1000\n")
-> 0.0004s
== 20140715055242 AddQuotedPosts: migrated (0.0112s) ==========================
== 20140715160720 UpdateUsersCaseInsensitiveEmails: migrating =================
-- execute("DROP INDEX index_users_on_email")
-> 0.0003s
-- execute(" SELECT id, email, count\n FROM (SELECT id, email,\n row_number() OVER(PARTITION BY lower(email) ORDER BY id asc) AS count\n FROM users) dups\n WHERE dups.count > 1\n")
-> 0.0003s
-- execute("UPDATE users SET email = lower(email)")
-> 0.0002s
-- execute("CREATE UNIQUE INDEX index_users_on_email ON users ((lower(email)));")
-> 0.0025s
== 20140715160720 UpdateUsersCaseInsensitiveEmails: migrated (0.0035s) ========
== 20140715190552 RemoveUncategorizedParents: migrating =======================
-- execute("SELECT value FROM site_settings WHERE name = 'uncategorized_category_id'")
-> 0.0002s
-- execute("UPDATE categories SET parent_category_id = NULL where id = 1")
-> 0.0004s
== 20140715190552 RemoveUncategorizedParents: migrated (0.0006s) ==============
== 20140716063802 AddBadgeGroupings: migrating ================================
-- create_table(:badge_groupings)
-> 0.0067s
-- add_column(:badges, :badge_grouping_id, :integer)
-> 0.0003s
== 20140716063802 AddBadgeGroupings: migrated (0.0071s) =======================
== 20140717024528 DescriptionOptionalInBadgeGrouping: migrating ===============
-- change_column(:badge_groupings, :description, :text, {:null=>true})
-> 0.0004s
== 20140717024528 DescriptionOptionalInBadgeGrouping: migrated (0.0005s) ======
== 20140718041445 SetDefaultBadgeGrouping: migrating ==========================
-- execute("UPDATE badges SET badge_grouping_id = 5 WHERE badge_grouping_id IS NULL")
-> 0.0003s
-- change_column(:badges, :badge_grouping_id, :integer, {:null=>false, :default=>5})
-> 0.0023s
== 20140718041445 SetDefaultBadgeGrouping: migrated (0.0027s) =================
== 20140721063820 AddTriggerToBadges: migrating ===============================
-- add_column(:badges, :trigger, :integer)
-> 0.0003s
== 20140721063820 AddTriggerToBadges: migrated (0.0004s) ======================
== 20140721161249 AddAgreedAtAndAgreedByIdToPostAction: migrating =============
-- add_column(:post_actions, :agreed_at, :datetime)
-> 0.0003s
-- add_column(:post_actions, :agreed_by_id, :integer)
-> 0.0002s
== 20140721161249 AddAgreedAtAndAgreedByIdToPostAction: migrated (0.0006s) ====
== 20140721162307 RenameDeferColumnsOnPostAction: migrating ===================
-- rename_column(:post_actions, :defer_by, :defered_by_id)
-> 0.0013s
-- add_column(:post_actions, :defered_at, :datetime)
-> 0.0003s
-- execute("UPDATE post_actions SET defered_at = updated_at WHERE defer = 't'")
-> 0.0003s
-- remove_column(:post_actions, :defer)
-> 0.0003s
== 20140721162307 RenameDeferColumnsOnPostAction: migrated (0.0023s) ==========
== 20140723011456 AddShowPostsToBadges: migrating =============================
-- add_column(:badges, :show_posts, :boolean, {:null=>false, :default=>false})
-> 0.0107s
== 20140723011456 AddShowPostsToBadges: migrated (0.0107s) ====================
== 20140725050636 RemoveInvalidIncomingLinks: migrating =======================
-- execute("DELETE FROM incoming_links WHERE url ILIKE '%avatar%.png'")
-> 0.0003s
== 20140725050636 RemoveInvalidIncomingLinks: migrated (0.0004s) ==============
== 20140725172830 RemoveMessageFromPostAction: migrating ======================
-- remove_column(:post_actions, :message)
-> 0.0003s
== 20140725172830 RemoveMessageFromPostAction: migrated (0.0003s) =============
== 20140727030954 AddEditHistoryPublicToUsers: migrating ======================
-- add_column(:users, :edit_history_public, :boolean, {:default=>false, :null=>false})
-> 0.0245s
== 20140727030954 AddEditHistoryPublicToUsers: migrated (0.0246s) =============
== 20140728120708 FixIndexOnPostAction: migrating =============================
-- remove_index("post_actions", {:name=>"idx_unique_actions"})
-> 0.0009s
-- add_index("post_actions", ["user_id", "post_action_type_id", "post_id", "deleted_at", "targets_topic"], {:name=>"idx_unique_actions", :unique=>true})
-> 0.0036s
== 20140728120708 FixIndexOnPostAction: migrated (0.0046s) ====================
== 20140728144308 AddFirstPostCreatedAtToUserStat: migrating ==================
-- add_column(:user_stats, :first_post_created_at, :datetime)
-> 0.0003s
-- execute(" WITH first_posts AS (\n SELECT p.id,\n p.user_id,\n p.created_at,\n ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY p.created_at ASC) AS row\n FROM posts p\n )\n UPDATE user_stats us\n SET first_post_created_at = fp.created_at\n FROM first_posts fp\n WHERE fp.row = 1\n AND fp.user_id = us.user_id\n")
-> 0.0004s
== 20140728144308 AddFirstPostCreatedAtToUserStat: migrated (0.0008s) =========
== 20140728152804 AddPostAndTopicCountsToUserStat: migrating ==================
-- add_column(:user_stats, :post_count, :integer, {:default=>0, :null=>false})
-> 0.0050s
-- add_column(:user_stats, :topic_count, :integer, {:default=>0, :null=>false})
-> 0.0043s
-- execute(" UPDATE user_stats\n SET post_count = pc.count\n FROM (SELECT user_id, COUNT(*) AS count FROM posts GROUP BY user_id) AS pc\n WHERE pc.user_id = user_stats.user_id\n")
-> 0.0004s
-- execute(" UPDATE user_stats\n SET topic_count = tc.count\n FROM (SELECT user_id, COUNT(*) AS count FROM topics GROUP BY user_id) AS tc\n WHERE tc.user_id = user_stats.user_id\n")
-> 0.0003s
== 20140728152804 AddPostAndTopicCountsToUserStat: migrated (0.0102s) =========
== 20140729092525 RemoveUniqueConstraintFromInvitesIndex: migrating ===========
-- remove_index(:invites, [:email, :invited_by_id])
-> 0.0009s
-- add_index(:invites, [:email, :invited_by_id], {:unique=>false})
-> 0.0036s
== 20140729092525 RemoveUniqueConstraintFromInvitesIndex: migrated (0.0046s) ==
== 20140730203029 AddDisagreedAtAndDisagreedByIdToPostAction: migrating =======
-- add_column(:post_actions, :disagreed_at, :datetime)
-> 0.0003s
-- add_column(:post_actions, :disagreed_by_id, :integer)
-> 0.0002s
-- execute(" UPDATE post_actions\n SET disagreed_at = deleted_at,\n disagreed_by_id = deleted_by_id,\n deleted_at = NULL,\n deleted_by_id = NULL\n WHERE deleted_by_id != user_id\n")
-> 0.0003s
== 20140730203029 AddDisagreedAtAndDisagreedByIdToPostAction: migrated (0.0009s)
== 20140731011328 AddReplyQuotedToPosts: migrating ============================
-- add_column(:posts, :reply_quoted, :boolean, {:null=>false, :default=>false})
-> 0.0152s
-- execute("UPDATE posts p\n SET reply_quoted = true\n WHERE EXISTS(\n SELECT 1 FROM quoted_posts q\n JOIN posts p1 ON p1.post_number = p.reply_to_post_number AND p1.topic_id = p.topic_id\n WHERE q.post_id = p.id AND q.quoted_post_id = p1.id\n ) AND p.reply_to_post_number IS NOT NULL")
-> 0.0007s
== 20140731011328 AddReplyQuotedToPosts: migrated (0.0160s) ===================
== 20140801052028 FixIncomingLinks: migrating =================================
-- execute("DROP INDEX incoming_index")
-> 0.0002s
-- add_column(:incoming_links, :post_id, :integer)
-> 0.0003s
-- remove_column(:incoming_links, :updated_at)
-> 0.0002s
-- remove_column(:incoming_links, :url)
-> 0.0002s
-- execute("UPDATE incoming_links l SET post_id = (\n SELECT p.id FROM posts p WHERE p.topic_id = l.topic_id AND p.post_number = l.post_number\n )")
-> 0.0004s
-- execute("DELETE FROM incoming_links WHERE post_id IS NULL")
-> 0.0001s
-- change_column(:incoming_links, :post_id, :integer, {:null=>false})
-> 0.0004s
-- add_index(:incoming_links, :post_id)
-> 0.0036s
== 20140801052028 FixIncomingLinks: migrated (0.0056s) ========================
== 20140801170444 CreatePostTimingsUserIndex: migrating =======================
-- add_index(:post_timings, :user_id)
-> 0.0034s
== 20140801170444 CreatePostTimingsUserIndex: migrated (0.0034s) ==============
== 20140804010803 IncomingLinkNormalization: migrating ========================
-- remove_column(:incoming_links, :post_number)
-> 0.0002s
-- remove_column(:incoming_links, :domain)
-> 0.0003s
-- add_column(:incoming_links, :incoming_referer_id, :integer)
-> 0.0002s
-- create_table(:incoming_referers)
-> 0.0103s
-- execute("INSERT INTO incoming_referers(url, https, domain, port, path)\n SELECT referer,\n CASE WHEN a[1] = 's' THEN true ELSE false END,\n a[2] as domain,\n CASE WHEN a[1] = 's' THEN\n COALESCE(a[4]::integer, 443)::integer\n ELSE\n COALESCE(a[4]::integer, 80)::integer\n END,\n COALESCE(a[5], '') path\n FROM\n (\n SELECT referer, regexp_matches(referer, 'http(s)?://([^/:]+)(:(d+))?(.*)') a\n FROM\n (\n SELECT DISTINCT referer\n FROM incoming_links WHERE referer ~ '^https?://.+'\n ) Z\n ) X\n WHERE a[2] IS NOT NULL")
-> 0.0005s
-- execute("UPDATE incoming_links l\n SET incoming_referer_id = r.id\n FROM incoming_referers r\n WHERE r.url = l.referer")
-> 0.0003s
-- create_table(:incoming_domains)
-> 0.0039s
-- execute("INSERT INTO incoming_domains(name, port, https)\n SELECT DISTINCT domain, port, https\n FROM incoming_referers")
-> 0.0002s
-- execute("UPDATE incoming_referers l\n SET incoming_domain_id = d.id\n FROM incoming_domains d\n WHERE d.name = l.domain AND d.https = l.https AND d.port = l.port")
-> 0.0004s
-- remove_column(:incoming_referers, :domain)
-> 0.0002s
-- remove_column(:incoming_referers, :port)
-> 0.0002s
-- remove_column(:incoming_referers, :https)
-> 0.0002s
-- change_column(:incoming_referers, :incoming_domain_id, :integer, {:null=>false})
-> 0.0003s
-- add_index(:incoming_referers, [:path, :incoming_domain_id], {:unique=>true})
-> 0.0035s
-- add_index(:incoming_domains, [:name, :https, :port], {:unique=>true})
-> 0.0064s
-- remove_column(:incoming_links, :referer)
-> 0.0002s
== 20140804010803 IncomingLinkNormalization: migrated (0.0277s) ===============
== 20140804030041 RemoveUrlFromIncomingReferer: migrating =====================
-- remove_column(:incoming_referers, :url)
-> 0.0002s
== 20140804030041 RemoveUrlFromIncomingReferer: migrated (0.0003s) ============
== 20140804060439 DropTopicIdFromIncomingLinks: migrating =====================
-- remove_column(:incoming_links, :topic_id)
-> 0.0002s
== 20140804060439 DropTopicIdFromIncomingLinks: migrated (0.0003s) ============
== 20140804072504 ViewsToTopicViews: migrating ================================
-- remove_column(:views, :parent_type)
-> 0.0004s
-- rename_column(:views, :parent_id, :topic_id)
-> 0.0007s
-- rename_table(:views, :topic_views)
-> 0.0027s
-- add_index(:topic_views, [:topic_id])
-> 0.0036s
-- add_index(:topic_views, [:user_id, :topic_id])
-> 0.0036s
== 20140804072504 ViewsToTopicViews: migrated (0.0112s) =======================
== 20140804075613 NormalizeTopicViewDataAndIndex: migrating ===================
-- remove_index(:topic_views, [:topic_id])
-> 0.0009s
-- remove_index(:topic_views, [:user_id, :topic_id])
-> 0.0008s
-- execute("CREATE TEMPORARY TABLE tmp_views_user(user_id int, topic_id int, viewed_at date, ip_address inet)")
-> 0.0016s
-- execute("INSERT INTO tmp_views_user(user_id, topic_id, ip_address, viewed_at)\n SELECT user_id, topic_id, min(ip_address::varchar)::inet, min(viewed_at)\n FROM topic_views\n WHERE user_id IS NOT NULL\n GROUP BY user_id, topic_id\n ")
-> 0.0004s
-- execute("CREATE TEMPORARY TABLE tmp_views_ip(topic_id int, viewed_at date, ip_address inet)")
-> 0.0008s
-- execute("INSERT INTO tmp_views_ip(topic_id, ip_address, viewed_at)\n SELECT topic_id, ip_address, min(viewed_at)\n FROM topic_views\n WHERE user_id IS NULL\n GROUP BY user_id, topic_id, ip_address\n ")
-> 0.0003s
-- execute("truncate table topic_views")
-> 0.0026s
-- execute("INSERT INTO topic_views(user_id, topic_id, ip_address, viewed_at)\n SELECT user_id, topic_id, ip_address, viewed_at FROM tmp_views_user\n UNION ALL\n SELECT NULL, topic_id, ip_address, viewed_at FROM tmp_views_ip\n ")
-> 0.0007s
-- execute("CREATE UNIQUE INDEX user_id_topic_id_topic_views ON topic_views(user_id, topic_id) WHERE user_id IS NOT NULL")
-> 0.0024s
-- execute("CREATE UNIQUE INDEX ip_address_topic_id_topic_views ON topic_views(ip_address, topic_id) WHERE user_id IS NULL")
-> 0.0023s
-- add_index(:topic_views, [:topic_id, :viewed_at])
-> 0.0032s
-- add_index(:topic_views, [:viewed_at, :topic_id])
-> 0.0034s
== 20140804075613 NormalizeTopicViewDataAndIndex: migrated (0.0196s) ==========
== 20140805061612 AddBioCookedVersionToUserProfile: migrating =================
-- add_column(:user_profiles, :bio_cooked_version, :integer)
-> 0.0003s
-- add_index(:user_profiles, [:bio_cooked_version])
-> 0.0034s
== 20140805061612 AddBioCookedVersionToUserProfile: migrated (0.0038s) ========
== 20140806003116 FixupBadgeIds: migrating ====================================
-- add_column(:badges, :system, :boolean, {:default=>false, :null=>false})
-> 0.0105s
== 20140806003116 FixupBadgeIds: migrated (0.0106s) ===========================
== 20140807033123 AddIndexOnLastSeenToUsers: migrating ========================
-- add_index(:users, [:last_seen_at])
-> 0.0036s
== 20140807033123 AddIndexOnLastSeenToUsers: migrated (0.0037s) ===============
== 20140808051823 CreateTopicSearchIndex: migrating ===========================
-- create_table(:topic_search_data, {:id=>false})
-> 0.0059s
-- execute("CREATE INDEX idx_search_topic ON topic_search_data USING gin (search_data)")
-> 0.0004s
== 20140808051823 CreateTopicSearchIndex: migrated (0.0063s) ==================
== 20140809224243 AddUserBadgeUniqueIndex: migrating ==========================
-- add_column(:user_badges, :seq, :integer, {:default=>0, :null=>false})
-> 0.0148s
-- execute("\n UPDATE user_badges ub1 SET seq = X.seq\n FROM (\n SELECT ub.id, rank() OVER (PARTITION BY user_id ORDER BY granted_at) seq\n FROM user_badges ub\n JOIN badges b ON b.id = ub.badge_id\n WHERE b.multiple_grant\n ) X\n WHERE ub1.id = X.id\n ")
-> 0.0007s
-- execute("\n DELETE FROM user_badges ub1\n WHERE ub1.id NOT IN (\n SELECT MIN(ub.id)\n FROM user_badges ub\n GROUP BY ub.user_id, ub.badge_id, ub.seq\n )\n ")
-> 0.0003s
-- add_index(:user_badges, [:badge_id, :user_id, :seq], {:unique=>true, :where=>"post_id IS NULL"})
-> 0.0033s
== 20140809224243 AddUserBadgeUniqueIndex: migrated (0.0192s) =================
== 20140811094300 RenameDeferedColumnsOnPostAction: migrating =================
-- rename_column(:post_actions, :defered_by_id, :deferred_by_id)
-> 0.0015s
-- rename_column(:post_actions, :defered_at, :deferred_at)
-> 0.0015s
== 20140811094300 RenameDeferedColumnsOnPostAction: migrated (0.0030s) ========
== 20140813175357 AddDefaultToActive: migrating ===============================
-- change_column(:users, :active, :boolean, {:default=>false, :null=>false})
-> 0.0039s
== 20140813175357 AddDefaultToActive: migrated (0.0039s) ======================
== 20140815183851 FixIndexOnPostActions: migrating ============================
-- execute("UPDATE post_actions SET targets_topic = false WHERE targets_topic IS NULL")
-> 0.0002s
-- change_column(:post_actions, :targets_topic, :boolean, {:default=>false, :null=>false})
-> 0.0029s
-- execute("\n DELETE FROM post_actions pa\n USING post_actions x\n WHERE pa.user_id = x.user_id AND\n pa.post_action_type_id = x.post_action_type_id AND\n pa.post_id = x.post_id AND\n pa.targets_topic = x.targets_topic AND\n pa.id < x.id AND\n pa.deleted_at IS NULL AND\n x.deleted_at IS NULL\n ")
-> 0.0004s
-- remove_index("post_actions", {:name=>"idx_unique_actions"})
-> 0.0009s
-- add_index("post_actions", ["user_id", "post_action_type_id", "post_id", "targets_topic"], {:name=>"idx_unique_actions", :unique=>true, :where=>"deleted_at IS NULL"})
-> 0.0038s
== 20140815183851 FixIndexOnPostActions: migrated (0.0083s) ===================
== 20140815191556 FixPostActionsIndexAgain: migrating =========================
-- remove_index("post_actions", {:name=>"idx_unique_actions"})
-> 0.0009s
-- add_index("post_actions", ["user_id", "post_action_type_id", "post_id", "targets_topic"], {:name=>"idx_unique_actions", :unique=>true, :where=>"deleted_at IS NULL AND disagreed_at IS NULL AND deferred_at IS NULL"})
-> 0.0037s
== 20140815191556 FixPostActionsIndexAgain: migrated (0.0047s) ================
== 20140815215618 AddNameLowerToCategories: migrating =========================
-- add_column(:categories, :name_lower, :string, {:limit=>50})
-> 0.0004s
-- execute("update categories set name_lower = lower(name)")
-> 0.0003s
-- change_column(:categories, :name_lower, :string, {:limit=>50, :null=>false})
-> 0.0005s
== 20140815215618 AddNameLowerToCategories: migrated (0.0012s) ================
== 20140817011612 AddExternalAvatarUrlToSingleSignOnRecord: migrating =========
-- add_column(:single_sign_on_records, :external_avatar_url, :string)
-> 0.0003s
== 20140817011612 AddExternalAvatarUrlToSingleSignOnRecord: migrated (0.0004s)
== 20140818023700 IndexEmailTokens: migrating =================================
-- add_index(:email_tokens, [:user_id])
-> 0.0036s
== 20140818023700 IndexEmailTokens: migrated (0.0037s) ========================
== 20140826234625 RenameSettingsPop3sToPop3: migrating ========================
-- execute("UPDATE site_settings SET name = replace(name, 'pop3s', 'pop3') WHERE name ILIKE 'pop3%'")
-> 0.0002s
== 20140826234625 RenameSettingsPop3sToPop3: migrated (0.0003s) ===============
== 20140827044811 RemoveNullableDates: migrating ==============================
-- execute("DROP VIEW badge_posts")
-> 0.0007s
-- execute("select table_name, column_name from information_schema.columns\n WHERE column_name IN ('created_at','updated_at') AND\n table_schema = 'public' AND\n is_nullable = 'YES' AND\n is_updatable = 'YES' AND\n data_type = 'timestamp without time zone'")
-> 0.0088s
-- execute("UPDATE \"users\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:users, :created_at, :datetime, {:null=>false})
-> 0.0005s
-- execute("UPDATE \"users\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:users, :updated_at, :datetime, {:null=>false})
-> 0.0005s
-- execute("UPDATE \"versions\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:versions, :created_at, :datetime, {:null=>false})
-> 0.0006s
-- execute("UPDATE \"versions\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:versions, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"uploads\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:uploads, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"uploads\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:uploads, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"message_bus\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:message_bus, :created_at, :datetime, {:null=>false})
-> 0.0005s
-- execute("UPDATE \"notifications\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:notifications, :created_at, :datetime, {:null=>false})
-> 0.0007s
-- execute("UPDATE \"notifications\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:notifications, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_links\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:topic_links, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_links\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topic_links, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"posts\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:posts, :created_at, :datetime, {:null=>false})
-> 0.0031s
-- execute("UPDATE \"posts\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0003s
-- change_column(:posts, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"post_replies\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:post_replies, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_replies\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0001s
-- change_column(:post_replies, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topics\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:topics, :created_at, :datetime, {:null=>false})
-> 0.0005s
-- execute("UPDATE \"topics\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topics, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"incoming_links\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:incoming_links, :created_at, :datetime, {:null=>false})
-> 0.0007s
-- execute("UPDATE \"site_settings\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:site_settings, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"site_settings\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:site_settings, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"user_open_ids\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:user_open_ids, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"user_open_ids\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0001s
-- change_column(:user_open_ids, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"categories\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:categories, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"categories\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:categories, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"category_featured_topics\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:category_featured_topics, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"category_featured_topics\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:category_featured_topics, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"user_actions\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:user_actions, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"user_actions\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:user_actions, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"topic_link_clicks\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:topic_link_clicks, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"topic_link_clicks\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topic_link_clicks, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"post_actions\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:post_actions, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_actions\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:post_actions, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_action_types\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:post_action_types, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_action_types\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:post_action_types, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"category_featured_users\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:category_featured_users, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"category_featured_users\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:category_featured_users, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"twitter_user_infos\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:twitter_user_infos, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"twitter_user_infos\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:twitter_user_infos, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_allowed_users\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:topic_allowed_users, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_allowed_users\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topic_allowed_users, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"email_logs\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0004s
-- change_column(:email_logs, :created_at, :datetime, {:null=>false})
-> 0.0012s
-- execute("UPDATE \"email_logs\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:email_logs, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"facebook_user_infos\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:facebook_user_infos, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"facebook_user_infos\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:facebook_user_infos, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"email_tokens\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:email_tokens, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"email_tokens\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:email_tokens, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"topic_invites\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:topic_invites, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_invites\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topic_invites, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"drafts\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:drafts, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"drafts\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:drafts, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"invites\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0004s
-- change_column(:invites, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"invites\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:invites, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"site_customizations\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:site_customizations, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"site_customizations\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:site_customizations, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"github_user_infos\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:github_user_infos, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"github_user_infos\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:github_user_infos, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"site_contents\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:site_contents, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"site_contents\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:site_contents, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"group_users\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:group_users, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"group_users\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0001s
-- change_column(:group_users, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"category_groups\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:category_groups, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"category_groups\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:category_groups, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"user_histories\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:user_histories, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"user_histories\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:user_histories, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"groups\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:groups, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"groups\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:groups, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"screened_emails\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:screened_emails, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"screened_emails\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:screened_emails, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"oauth2_user_infos\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:oauth2_user_infos, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"oauth2_user_infos\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0003s
-- change_column(:oauth2_user_infos, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"screened_urls\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:screened_urls, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"screened_urls\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:screened_urls, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_details\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:post_details, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_details\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:post_details, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"screened_ip_addresses\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:screened_ip_addresses, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"screened_ip_addresses\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:screened_ip_addresses, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"api_keys\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:api_keys, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"api_keys\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:api_keys, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"post_revisions\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:post_revisions, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"post_revisions\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:post_revisions, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"topic_embeds\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:topic_embeds, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_embeds\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topic_embeds, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"single_sign_on_records\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:single_sign_on_records, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"single_sign_on_records\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:single_sign_on_records, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"badge_types\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:badge_types, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"badge_types\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:badge_types, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"color_schemes\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:color_schemes, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"color_schemes\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:color_schemes, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"color_scheme_colors\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:color_scheme_colors, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"color_scheme_colors\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:color_scheme_colors, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"user_custom_fields\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:user_custom_fields, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"user_custom_fields\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0001s
-- change_column(:user_custom_fields, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"category_custom_fields\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:category_custom_fields, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"category_custom_fields\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:category_custom_fields, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"group_custom_fields\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:group_custom_fields, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"group_custom_fields\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:group_custom_fields, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"post_custom_fields\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:post_custom_fields, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"post_custom_fields\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:post_custom_fields, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"topic_custom_fields\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:topic_custom_fields, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"topic_custom_fields\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:topic_custom_fields, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"invited_groups\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:invited_groups, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"invited_groups\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:invited_groups, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"badges\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:badges, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"badges\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:badges, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"google_user_infos\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0003s
-- change_column(:google_user_infos, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"google_user_infos\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:google_user_infos, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"user_avatars\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:user_avatars, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"user_avatars\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:user_avatars, :updated_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"quoted_posts\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:quoted_posts, :created_at, :datetime, {:null=>false})
-> 0.0004s
-- execute("UPDATE \"quoted_posts\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:quoted_posts, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"badge_groupings\" SET created_at = CURRENT_TIMESTAMP WHERE created_at IS NULL")
-> 0.0002s
-- change_column(:badge_groupings, :created_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("UPDATE \"badge_groupings\" SET updated_at = CURRENT_TIMESTAMP WHERE updated_at IS NULL")
-> 0.0002s
-- change_column(:badge_groupings, :updated_at, :datetime, {:null=>false})
-> 0.0003s
-- execute("CREATE VIEW badge_posts AS\n SELECT p.*\n FROM posts p\n JOIN topics t ON t.id = p.topic_id\n JOIN categories c ON c.id = t.category_id\n WHERE c.allow_badges AND\n p.deleted_at IS NULL AND\n t.deleted_at IS NULL AND\n NOT c.read_restricted AND\n t.visible")
-> 0.0033s
== 20140827044811 RemoveNullableDates: migrated (0.0890s) =====================
== 20140828172407 CreatePermalinks: migrating =================================
-- create_table(:permalinks)
-> 0.0084s
-- add_index(:permalinks, :url)
-> 0.0033s
== 20140828172407 CreatePermalinks: migrated (0.0119s) ========================
== 20140828200231 MakeUrlColBiggerInPermalinks: migrating =====================
-- remove_index(:permalinks, :url)
-> 0.0009s
-- change_column(:permalinks, :url, :string, {:limit=>1000, :null=>false})
-> 0.0057s
-- add_index(:permalinks, :url, {:unique=>true})
-> 0.0035s
== 20140828200231 MakeUrlColBiggerInPermalinks: migrated (0.0102s) ============
== 20140831191346 RemoveCategoryGroupsOrphanedByRemovingCategoryOrGroup: migrating
-- execute("DELETE FROM category_groups\n WHERE group_id NOT IN (\n SELECT groups.id FROM groups)\n OR category_id NOT IN (\n SELECT categories.id FROM categories)")
-> 0.0004s
== 20140831191346 RemoveCategoryGroupsOrphanedByRemovingCategoryOrGroup: migrated (0.0005s)
== 20140904055702 CorrectPostActionIndex: migrating ===========================
-- execute("DELETE FROM post_actions pa\n USING post_actions pa2\n WHERE pa.post_action_type_id IN (3,4,7,8) AND\n pa2.post_action_type_id IN (3,4,7,8) AND\n pa.deleted_at IS NULL AND\n pa2.deleted_at IS NULL AND\n pa.disagreed_at IS NULL AND\n pa2.disagreed_at IS NULL AND\n pa.deferred_at IS NULL AND\n pa2.deferred_at IS NULL AND\n pa.id < pa2.id AND\n pa.user_id = pa2.user_id AND\n pa.post_id = pa2.post_id AND\n pa.targets_topic = pa2.targets_topic")
-> 0.0005s
>> DELETED 0 invalid rows from post_actions
-- add_index(:post_actions, ["user_id", "post_id", "targets_topic"], {:name=>"idx_unique_flags", :unique=>true, :where=>"deleted_at IS NULL AND\n disagreed_at IS NULL AND\n deferred_at IS NULL AND\n post_action_type_id IN (3,4,7,8)"})
-> 0.0037s
== 20140904055702 CorrectPostActionIndex: migrated (0.0043s) ==================
== 20140904160015 AddViaEmailToPosts: migrating ===============================
-- add_column(:posts, :via_email, :boolean, {:default=>false, :null=>false})
-> 0.0184s
== 20140904160015 AddViaEmailToPosts: migrated (0.0184s) ======================
== 20140904215629 RenameTrustLevelSettings: migrating =========================
-- execute("UPDATE site_settings\n SET name = regexp_replace(name, '^basic_', 'tl1_')")
-> 0.0003s
-- execute("UPDATE site_settings\n SET name = regexp_replace(name, '^regular_', 'tl2_')")
-> 0.0002s
-- execute("UPDATE site_settings\n SET name = regexp_replace(name, '^leader_', 'tl3_')")
-> 0.0002s
== 20140904215629 RenameTrustLevelSettings: migrated (0.0008s) ================
== 20140905055251 RenameTrustLevelBadges: migrating ===========================
-- execute("UPDATE badges SET name = 'Member' WHERE name = 'Regular User' AND id = 2")
-> 0.0003s
-- execute("UPDATE badges SET name = 'Regular' WHERE name = 'Leader' AND id = 3")
-> 0.0002s
-- execute("UPDATE badges SET name = 'Leader' WHERE name = 'Elder' AND id = 4")
-> 0.0002s
== 20140905055251 RenameTrustLevelBadges: migrated (0.0008s) ==================
== 20140905171733 CreateWarnings: migrating ===================================
-- create_table(:warnings)
-> 0.0037s
-- add_index(:warnings, :user_id)
-> 0.0033s
-- add_index(:warnings, :topic_id, {:unique=>true})
-> 0.0033s
== 20140905171733 CreateWarnings: migrated (0.0104s) ==========================
== 20140908165716 MigrateWarningTopicSubtypes: migrating ======================
-- execute("UPDATE topics AS t\n SET subtype = 'moderator_warning'\n FROM warnings AS w\n WHERE w.topic_id = t.id")
-> 0.0006s
== 20140908165716 MigrateWarningTopicSubtypes: migrated (0.0006s) =============
== 20140908191429 TrimProfileLength: migrating ================================
-- execute("UPDATE user_profiles SET bio_raw=LEFT(bio_raw, 3000)")
-> 0.0003s
== 20140908191429 TrimProfileLength: migrated (0.0003s) =======================
== 20140910130155 CreateTopicUserIndex: migrating =============================
-- add_index(:topic_users, [:user_id, :topic_id], {:unique=>true})
-> 0.0035s
== 20140910130155 CreateTopicUserIndex: migrated (0.0036s) ====================
== 20140911065449 PrivateMessagesHaveNoCategoryId: migrating ==================
-- execute("UPDATE topics SET category_id = NULL WHERE category_id IS NOT NULL AND archetype = 'private_message'")
-> 0.0003s
-- execute("ALTER TABLE topics ADD CONSTRAINT pm_has_no_category CHECK (category_id IS NULL OR archetype <> 'private_message')")
-> 0.0004s
== 20140911065449 PrivateMessagesHaveNoCategoryId: migrated (0.0007s) =========
== 20140913192733 AddTrustLevelLockedColumn: migrating ========================
-- add_column(:users, :trust_level_locked, :boolean, {:default=>false, :null=>false})
-> 0.0249s
-- execute(" UPDATE users\n SET trust_level_locked = 't'\n WHERE trust_level = 4\n")
-> 0.0004s
== 20140913192733 AddTrustLevelLockedColumn: migrated (0.0254s) ===============
== 20140923042349 AddRetainHoursToUploads: migrating ==========================
-- add_column(:uploads, :retain_hours, :integer)
-> 0.0003s
== 20140923042349 AddRetainHoursToUploads: migrated (0.0004s) =================
== 20140924192418 RenameContentType: migrating ================================
-- rename_column(:site_contents, :content_type, :text_type)
-> 0.0014s
-- rename_column(:site_contents, :content, :value)
-> 0.0010s
-- rename_table(:site_contents, :site_texts)
-> 0.0032s
== 20140924192418 RenameContentType: migrated (0.0057s) =======================
== 20140925173220 CreateUserFields: migrating =================================
-- create_table(:user_fields)
-> 0.0060s
== 20140925173220 CreateUserFields: migrated (0.0060s) ========================
== 20140929181930 AddEditableToUserFields: migrating ==========================
-- add_column(:user_fields, :editable, :boolean, {:default=>false, :null=>false})
-> 0.0059s
== 20140929181930 AddEditableToUserFields: migrated (0.0060s) =================
== 20140929204155 MigrateTosSetting: migrating ================================
-- execute("SELECT * FROM site_settings WHERE name = 'tos_accept_required' AND value = 't'")
-> 0.0002s
== 20140929204155 MigrateTosSetting: migrated (0.0002s) =======================
== 20141001101041 AddPostIdToUserHistories: migrating =========================
-- add_column(:user_histories, :post_id, :integer)
-> 0.0003s
== 20141001101041 AddPostIdToUserHistories: migrated (0.0003s) ================
== 20141002181613 AddDescriptionToUserFields: migrating =======================
-- add_column(:user_fields, :description, :string, {:null=>true})
-> 0.0003s
-- execute("UPDATE user_fields SET description=name")
-> 0.0002s
-- change_column(:user_fields, :description, :string, {:null=>false})
-> 0.0004s
== 20141002181613 AddDescriptionToUserFields: migrated (0.0010s) ==============
== 20141007224814 AddBadgeGrantedTitleToUserProfile: migrating ================
-- add_column(:user_profiles, :badge_granted_title, :boolean, {:default=>false})
-> 0.0083s
-- execute("UPDATE user_profiles SET badge_granted_title = true\n WHERE EXISTS (\n SELECT 1 FROM users WHERE users.id = user_id AND title IN ('Leader', 'Regular')\n )")
-> 0.0006s
-- execute("UPDATE user_profiles SET badge_granted_title = true\n WHERE EXISTS (\n SELECT 1 FROM users WHERE users.id = user_id AND title IN (SELECT name FROM badges WHERE allow_title)\n )")
-> 0.0004s
== 20141007224814 AddBadgeGrantedTitleToUserProfile: migrated (0.0094s) =======
== 20141008152953 AddExernalUrlToPermalinks: migrating ========================
-- add_column(:permalinks, :external_url, :string, {:limit=>1000})
-> 0.0003s
== 20141008152953 AddExernalUrlToPermalinks: migrated (0.0004s) ===============
== 20141008181228 AddRequiredSignupToUserFields: migrating ====================
-- add_column(:user_fields, :required, :boolean, {:default=>true, :null=>false})
-> 0.0059s
== 20141008181228 AddRequiredSignupToUserFields: migrated (0.0060s) ===========
== 20141008192525 AddAutoCloseBasedOnLastPostAndAutoCloseHoursToTopics: migrating
-- add_column(:topics, :auto_close_based_on_last_post, :boolean, {:default=>false})
-> 0.0204s
-- add_column(:topics, :auto_close_hours, :float)
-> 0.0003s
== 20141008192525 AddAutoCloseBasedOnLastPostAndAutoCloseHoursToTopics: migrated (0.0208s)
== 20141008192526 AddAutoCloseBasedOnLastPostToCategories: migrating ==========
-- add_column(:categories, :auto_close_based_on_last_post, :boolean, {:default=>false})
-> 0.0197s
== 20141008192526 AddAutoCloseBasedOnLastPostToCategories: migrated (0.0197s) =
== 20141014032859 AddHiddenToPostRevision: migrating ==========================
-- add_column(:post_revisions, :hidden, :boolean, {:null=>false, :default=>false})
-> 0.0109s
== 20141014032859 AddHiddenToPostRevision: migrated (0.0109s) =================
== 20141014191645 FixTosName: migrating =======================================
-- execute("UPDATE user_fields SET name = 'Terms of Service' WHERE name = 'I have read and accept the <a href=\"/tos\" target=\"_blank\">Terms of Service</a>.'")
-> 0.0002s
== 20141014191645 FixTosName: migrated (0.0005s) ==============================
== 20141015060145 AddRawEmailToPosts: migrating ===============================
-- add_column(:posts, :raw_email, :text)
-> 0.0004s
== 20141015060145 AddRawEmailToPosts: migrated (0.0004s) ======================
== 20141016183307 AddExpansionBackgroundToUserProfiles: migrating =============
-- add_column(:user_profiles, :expansion_background, :string, {:limit=>255})
-> 0.0003s
== 20141016183307 AddExpansionBackgroundToUserProfiles: migrated (0.0004s) ====
== 20141020153415 AddPublicVersionToPosts: migrating ==========================
-- add_column(:posts, :public_version, :integer, {:null=>false, :default=>1})
-> 0.0154s
-- execute(" UPDATE posts\n SET public_version = 1 + (SELECT COUNT(*) FROM post_revisions pr WHERE post_id = posts.id AND pr.hidden = 'f')\n WHERE public_version <> 1 + (SELECT COUNT(*) FROM post_revisions pr WHERE post_id = posts.id AND pr.hidden = 'f')\n")
-> 0.0006s
== 20141020153415 AddPublicVersionToPosts: migrated (0.0161s) =================
== 20141020154935 RenameExpansionToCard: migrating ============================
-- rename_column(:user_profiles, :expansion_background, :card_background)
-> 0.0012s
== 20141020154935 RenameExpansionToCard: migrated (0.0012s) ===================
== 20141020164816 AddImageToBadges: migrating =================================
-- add_column(:badges, :image, :string, {:limit=>255})
-> 0.0003s
== 20141020164816 AddImageToBadges: migrated (0.0004s) ========================
== 20141020174120 AddCardImageToUserProfiles: migrating =======================
-- add_column(:user_profiles, :card_image_badge_id, :integer)
-> 0.0003s
== 20141020174120 AddCardImageToUserProfiles: migrated (0.0003s) ==============
== 20141030222425 RenameSeenPostCount: migrating ==============================
-- rename_column(:topic_users, :seen_post_count, :highest_seen_post_number)
-> 0.0014s
== 20141030222425 RenameSeenPostCount: migrated (0.0015s) =====================
== 20141110150304 AddFooterToSiteCustomization: migrating =====================
-- add_column(:site_customizations, :footer, :text)
-> 0.0003s
-- add_column(:site_customizations, :mobile_footer, :text)
-> 0.0002s
== 20141110150304 AddFooterToSiteCustomization: migrated (0.0006s) ============
== 20141118011735 CorrectUsernameSearch: migrating ============================
-- execute("update user_search_data\n set search_data = TO_TSVECTOR('simple', username_lower || ' ' || lower(name))\n from users\n where users.id = user_search_data.user_id")
-> 0.0005s
== 20141118011735 CorrectUsernameSearch: migrated (0.0005s) ===================
== 20141120035016 AddAllowedIpsToApiKeys: migrating ===========================
-- change_table(:api_keys)
-> 0.0029s
== 20141120035016 AddAllowedIpsToApiKeys: migrated (0.0030s) ==================
== 20141120043401 AddHiddenToApiKeys: migrating ===============================
-- change_table(:api_keys)
-> 0.0148s
== 20141120043401 AddHiddenToApiKeys: migrated (0.0149s) ======================
== 20141211114517 FixEmojiPath: migrating =====================================
-- execute(" UPDATE posts\n SET cooked = REPLACE(cooked, '/plugins/emoji/images/', '/plugins/emoji/images/emoji_one/')\n WHERE cooked LIKE '%/plugins/emoji/images/%'\n")
-> 0.0005s
== 20141211114517 FixEmojiPath: migrated (0.0005s) ============================
== 20141216112341 ResolveDuplicateGroupNames: migrating =======================
== 20141216112341 ResolveDuplicateGroupNames: migrated (0.0125s) ==============
== 20141222051622 RemoveOverrideDefaultStylesFromSiteCustomizations: migrating
-- remove_column(:site_customizations, :override_default_style)
-> 0.0003s
== 20141222051622 RemoveOverrideDefaultStylesFromSiteCustomizations: migrated (0.0004s)
== 20141222224220 FixEmojiPathTake2: migrating ================================
-- execute(" UPDATE posts\n SET cooked = REPLACE(cooked, '/plugins/emoji/images/', '/images/emoji/')\n WHERE cooked LIKE '%/plugins/emoji/images/%'\n")
-> 0.0003s
== 20141222224220 FixEmojiPathTake2: migrated (0.0003s) =======================
== 20141222230707 AmendSiteCustomization: migrating ===========================
-- remove_column(:site_customizations, :position)
-> 0.0002s
== 20141222230707 AmendSiteCustomization: migrated (0.0003s) ==================
== 20141223145058 CreateCsvExportLogs: migrating ==============================
-- create_table(:csv_export_logs)
-> 0.0066s
== 20141223145058 CreateCsvExportLogs: migrated (0.0067s) =====================
== 20141228151019 RenameCsvExportLogsToUserExports: migrating =================
-- rename_table(:csv_export_logs, :user_exports)
-> 0.0023s
== 20141228151019 RenameCsvExportLogsToUserExports: migrated (0.0023s) ========
== 20150102113309 CleanUpUserHistory: migrating ===============================
== 20150102113309 CleanUpUserHistory: migrated (0.0017s) ======================
== 20150106215342 RemoveStars: migrating ======================================
-- execute(" INSERT INTO post_actions(user_id, post_id, post_action_type_id, created_at, updated_at)\n SELECT tu.user_id, p.id, 1, coalesce(tu.starred_at, now()), coalesce(tu.starred_at, now())\n FROM topic_users tu\n JOIN posts p ON p.topic_id = tu.topic_id AND p.post_number = 1\n LEFT JOIN post_actions pa ON\n pa.post_id = p.id AND\n pa.user_id = tu.user_id AND\n pa.post_action_type_id = 1\n WHERE pa.post_id IS NULL AND tu.starred\n")
-> 0.0008s
0 stars were converted to bookmarks!
-- execute(" DELETE FROM user_actions WHERE action_type = 10\n")
-> 0.0002s
-- remove_column(:topic_users, :starred)
-> 0.0004s
-- remove_column(:topic_users, :starred_at)
-> 0.0002s
-- remove_column(:topic_users, :unstarred_at)
-> 0.0002s
-- remove_column(:topics, :star_count)
-> 0.0004s
== 20150106215342 RemoveStars: migrated (0.0024s) =============================
== 20150108002354 AddLikedAndBookmarkedToTopicUser: migrating =================
-- add_column(:topic_users, :liked, :boolean, {:default=>false})
-> 0.0092s
-- add_column(:topic_users, :bookmarked, :boolean, {:default=>false})
-> 0.0085s
-- execute("UPDATE topic_users\n SET liked = true\n WHERE EXISTS (SELECT 1 FROM post_actions pa\n JOIN posts p ON p.id = pa.post_id\n JOIN topics t ON t.id = p.topic_id\n WHERE pa.deleted_at IS NULL AND\n p.deleted_at IS NULL AND\n t.deleted_at IS NULL AND\n pa.user_id = topic_users.user_id AND\n p.topic_id = topic_users.topic_id AND\n post_action_type_id = 2)\n ")
-> 0.0011s
-- execute("UPDATE topic_users\n SET bookmarked = true\n WHERE EXISTS (SELECT 1 FROM post_actions pa\n JOIN posts p ON p.id = pa.post_id\n JOIN topics t ON t.id = p.topic_id\n WHERE pa.deleted_at IS NULL AND\n p.deleted_at IS NULL AND\n t.deleted_at IS NULL AND\n pa.user_id = topic_users.user_id AND\n p.topic_id = topic_users.topic_id AND\n post_action_type_id = 1)\n ")
-> 0.0007s
== 20150108002354 AddLikedAndBookmarkedToTopicUser: migrated (0.0197s) ========
== 20150108202057 CreateBookmarkActions: migrating ============================
-- execute("INSERT INTO user_actions (action_type,\n user_id,\n target_topic_id,\n target_post_id,\n acting_user_id,\n created_at,\n updated_at)\n SELECT DISTINCT 3,\n pa.user_id,\n p.topic_id,\n pa.post_id,\n pa.user_id,\n pa.created_at,\n pa.updated_at\n FROM post_actions AS pa\n INNER JOIN posts AS p ON p.id = pa.post_id AND p.post_number = 1\n WHERE NOT EXISTS (SELECT 1 FROM user_actions AS ua WHERE ua.target_post_id = pa.post_id AND ua.action_type = 3 AND ua.user_id = pa.user_id)\n AND pa.post_action_type_id = 1\n AND pa.deleted_at IS NULL")
-> 0.0006s
== 20150108202057 CreateBookmarkActions: migrated (0.0007s) ===================
== 20150108211557 IndexTopicCustomFieldValues: migrating ======================
-- add_index(:topic_custom_fields, :value)
-> 0.0036s
== 20150108211557 IndexTopicCustomFieldValues: migrated (0.0036s) =============
== 20150108221703 GroupManagers: migrating ====================================
-- create_table(:group_managers)
-> 0.0037s
-- add_index(:group_managers, [:group_id, :user_id], {:unique=>true})
-> 0.0037s
== 20150108221703 GroupManagers: migrated (0.0075s) ===========================
== 20150112172258 AddNewSiteCustomizationTypes: migrating =====================
-- add_column(:site_customizations, :head_tag, :text)
-> 0.0003s
-- add_column(:site_customizations, :body_tag, :text)
-> 0.0002s
== 20150112172258 AddNewSiteCustomizationTypes: migrated (0.0006s) ============
== 20150112172259 MigrateSiteTextToSiteCustomization: migrating ===============
-- execute(" DO\n $do$\n BEGIN\n IF EXISTS(SELECT 1 FROM site_texts WHERE (text_type = 'head' OR text_type = 'bottom')) THEN\n INSERT INTO site_customizations (name, user_id, enabled, key, created_at, updated_at, head_tag, body_tag)\n VALUES\n (\n 'Migrated from Site Text',\n -1,\n 't',\n 'e52c2bca-94f3-488b-a0d8-c83995e37f51',\n now(),\n now(),\n (SELECT value FROM site_texts WHERE text_type = 'head' LIMIT 1),\n (SELECT value FROM site_texts WHERE text_type = 'bottom' LIMIT 1)\n );\n END IF;\n END\n $do$\n")
-> 0.0022s
== 20150112172259 MigrateSiteTextToSiteCustomization: migrated (0.0023s) ======
== 20150114093325 AddTopToSiteCustomization: migrating ========================
-- add_column(:site_customizations, :top, :text)
-> 0.0003s
-- add_column(:site_customizations, :mobile_top, :text)
-> 0.0002s
-- execute(" UPDATE site_customizations\n SET top = (SELECT value FROM site_texts WHERE text_type = 'top' LIMIT 1),\n mobile_top = (SELECT value FROM site_texts WHERE text_type = 'top' LIMIT 1),\n head_tag = (SELECT value FROM site_texts WHERE text_type = 'head' LIMIT 1),\n body_tag = (SELECT value FROM site_texts WHERE text_type = 'bottom' LIMIT 1)\n WHERE name = 'Migrated from Site Text'\n")
-> 0.0004s
== 20150114093325 AddTopToSiteCustomization: migrated (0.0010s) ===============
== 20150115172310 RenameUserExportColumn: migrating ===========================
-- rename_column(:user_exports, :export_type, :file_name)
-> 0.0008s
== 20150115172310 RenameUserExportColumn: migrated (0.0008s) ==================
== 20150119192813 AddPostsIndexIncludingDeleted: migrating ====================
-- add_index(:posts, [:user_id, :created_at])
-> 0.0041s
== 20150119192813 AddPostsIndexIncludingDeleted: migrated (0.0042s) ===========
== 20150123145128 AddAutomaticMembershipToGroup: migrating ====================
-- add_column(:groups, :automatic_membership_email_domains, :text)
-> 0.0003s
-- add_column(:groups, :automatic_membership_retroactive, :boolean, {:default=>false})
-> 0.0123s
== 20150123145128 AddAutomaticMembershipToGroup: migrated (0.0127s) ===========
== 20150129204520 AddShowOnProfileToUserFields: migrating =====================
-- add_column(:user_fields, :show_on_profile, :boolean, {:default=>false, :null=>false})
-> 0.0060s
== 20150129204520 AddShowOnProfileToUserFields: migrated (0.0061s) ============
== 20150203041207 AddApplicationRequests: migrating ===========================
-- create_table(:application_requests)
-> 0.0040s
-- add_index(:application_requests, [:date, :req_type], {:unique=>true})
-> 0.0034s
== 20150203041207 AddApplicationRequests: migrated (0.0076s) ==================
== 20150205032808 ResetApplicationRequests: migrating =========================
-- execute("TRUNCATE TABLE application_requests")
-> 0.0042s
== 20150205032808 ResetApplicationRequests: migrated (0.0043s) ================
== 20150205172051 AddCustomTypeToUserHistories: migrating =====================
-- add_column(:user_histories, :custom_type, :string)
-> 0.0003s
== 20150205172051 AddCustomTypeToUserHistories: migrated (0.0004s) ============
== 20150206004143 FlushApplicationRequests: migrating =========================
-- execute("TRUNCATE TABLE application_requests")
-> 0.0045s
== 20150206004143 FlushApplicationRequests: migrated (0.0045s) ================
== 20150213174159 CreateDigestUnsubscribeKeys: migrating ======================
-- create_table(:digest_unsubscribe_keys, {:id=>false})
-> 0.0008s
-- execute("ALTER TABLE digest_unsubscribe_keys ADD PRIMARY KEY (key)")
-> 0.0029s
-- add_index(:digest_unsubscribe_keys, :created_at)
-> 0.0034s
== 20150213174159 CreateDigestUnsubscribeKeys: migrated (0.0074s) =============
== 20150224004420 AddPinnedIndexes: migrating =================================
-- add_index(:topics, :pinned_globally, {:where=>"pinned_globally"})
-> 0.0036s
-- add_index(:topics, :pinned_at, {:where=>"pinned_at IS NOT NULL"})
-> 0.0034s
== 20150224004420 AddPinnedIndexes: migrated (0.0071s) ========================
== 20150227043622 AddLongDescriptionToBadges: migrating =======================
-- add_column(:badges, :long_description, :text)
-> 0.0003s
== 20150227043622 AddLongDescriptionToBadges: migrated (0.0004s) ==============
== 20150301224250 CreateSuggestedForIndex: migrating ==========================
-- add_index(:topics, [:created_at, :visible], {:where=>"deleted_at IS NULL AND archetype <> 'private_message'"})
-> 0.0037s
== 20150301224250 CreateSuggestedForIndex: migrated (0.0037s) =================
== 20150306050437 AddAllTimeAndOpLikesToTopTopics: migrating ==================
-- add_column(:top_topics, :all_score, :float, {:default=>0})
-> 0.0415s
-- add_column(:top_topics, "daily_op_likes_count", :integer, {:default=>0, :null=>false})
-> 0.0314s
-- add_index(:top_topics, ["daily_op_likes_count"])
-> 0.0034s
-- add_column(:top_topics, "weekly_op_likes_count", :integer, {:default=>0, :null=>false})
-> 0.0314s
-- add_index(:top_topics, ["weekly_op_likes_count"])
-> 0.0034s
-- add_column(:top_topics, "monthly_op_likes_count", :integer, {:default=>0, :null=>false})
-> 0.0423s
-- add_index(:top_topics, ["monthly_op_likes_count"])
-> 0.0036s
-- add_column(:top_topics, "yearly_op_likes_count", :integer, {:default=>0, :null=>false})
-> 0.0375s
-- add_index(:top_topics, ["yearly_op_likes_count"])
-> 0.0034s
== 20150306050437 AddAllTimeAndOpLikesToTopTopics: migrated (0.1983s) =========
== 20150318143915 CreateDirectoryItems: migrating =============================
-- create_table(:directory_items, {:force=>true})
-> 0.0045s
-- add_index(:directory_items, :period_type)
-> 0.0034s
== 20150318143915 CreateDirectoryItems: migrated (0.0080s) ====================
== 20150323034933 AddAllowPrivateMessagesToUserProfile: migrating =============
-- add_column(:user_profiles, :allow_private_messages, :boolean, {:default=>true, :null=>false})
-> 0.0124s
== 20150323034933 AddAllowPrivateMessagesToUserProfile: migrated (0.0124s) ====
== 20150323062322 RemoveAllowPrivateMessagesFromUserProfile: migrating ========
-- remove_column(:user_profiles, :allow_private_messages)
-> 0.0003s
== 20150323062322 RemoveAllowPrivateMessagesFromUserProfile: migrated (0.0003s)
== 20150323234856 AddMutedUsers: migrating ====================================
-- create_table(:muted_users, {:force=>true})
-> 0.0081s
-- add_index(:muted_users, [:user_id, :muted_user_id], {:unique=>true})
-> 0.0036s
-- add_index(:muted_users, [:muted_user_id, :user_id], {:unique=>true})
-> 0.0032s
== 20150323234856 AddMutedUsers: migrated (0.0150s) ===========================
== 20150324184222 AddMoreToDirectoryItems: migrating ==========================
-- add_column(:directory_items, :days_visited, :integer, {:null=>false, :default=>0})
-> 0.0065s
-- add_column(:directory_items, :posts_read, :integer, {:null=>false, :default=>0})
-> 0.0061s
== 20150324184222 AddMoreToDirectoryItems: migrated (0.0127s) =================
== 20150325183400 FixGroupUserCount: migrating ================================
-- execute("UPDATE groups g SET user_count = (SELECT COUNT(user_id) FROM group_users gu WHERE gu.group_id = g.id)")
-> 0.0004s
== 20150325183400 FixGroupUserCount: migrated (0.0005s) =======================
== 20150325190959 CreateQueuedPosts: migrating ================================
-- create_table(:queued_posts, {:force=>true})
-> 0.0069s
-- add_index(:queued_posts, [:queue, :state, :created_at], {:name=>"by_queue_status"})
-> 0.0033s
-- add_index(:queued_posts, [:topic_id, :queue, :state, :created_at], {:name=>"by_queue_status_topic"})
-> 0.0033s
== 20150325190959 CreateQueuedPosts: migrated (0.0135s) =======================
== 20150410002033 AddPrimaryGroupToGroups: migrating ==========================
-- add_column(:groups, :primary_group, :boolean, {:default=>false, :null=>false})
-> 0.0080s
== 20150410002033 AddPrimaryGroupToGroups: migrated (0.0081s) =================
== 20150410002551 AddTitleToGroups: migrating =================================
-- add_column(:groups, :title, :string)
-> 0.0003s
== 20150410002551 AddTitleToGroups: migrated (0.0003s) ========================
== 20150421085850 IncreaseUrlLengthOnTopicEmbed: migrating ====================
-- remove_index(:topic_embeds, :embed_url)
-> 0.0009s
-- change_column(:topic_embeds, :embed_url, :string, {:limit=>1000, :null=>false})
-> 0.0053s
-- add_index(:topic_embeds, :embed_url, {:unique=>true})
-> 0.0032s
== 20150421085850 IncreaseUrlLengthOnTopicEmbed: migrated (0.0095s) ===========
== 20150421190714 AddQueuedPostIdToUserActions: migrating =====================
-- add_column(:user_actions, :queued_post_id, :integer, {:null=>true})
-> 0.0003s
== 20150421190714 AddQueuedPostIdToUserActions: migrated (0.0003s) ============
== 20150422160235 AddLinkPostIdIndexOnTopicLinks: migrating ===================
-- add_index(:topic_links, [:link_post_id, :reflection])
-> 0.0034s
== 20150422160235 AddLinkPostIdIndexOnTopicLinks: migrated (0.0035s) ==========
== 20150501152228 RenameTotalVotesToVoters: migrating =========================
== 20150501152228 RenameTotalVotesToVoters: migrated (0.0047s) ================
== 20150505044154 AddStylesheetCache: migrating ===============================
-- create_table(:stylesheet_cache)
-> 0.0058s
-- add_index(:stylesheet_cache, [:target, :digest], {:unique=>true})
-> 0.0032s
== 20150505044154 AddStylesheetCache: migrated (0.0091s) ======================
== 20150513094042 AddIndexOnPostActions: migrating ============================
-- add_index(:post_actions, [:user_id, :post_action_type_id], {:where=>"deleted_at IS NULL"})
-> 0.0076s
== 20150513094042 AddIndexOnPostActions: migrated (0.0077s) ===================
== 20150514023016 AddUnreadNotificationsIndex: migrating ======================
-- add_index(:notifications, [:user_id, :notification_type], {:where=>"not read", :name=>"idx_notifications_speedup_unread_count"})
-> 0.0036s
== 20150514023016 AddUnreadNotificationsIndex: migrated (0.0036s) =============
== 20150514043155 AddUserActionsAllIndex: migrating ===========================
-- add_index(:user_actions, [:user_id, :created_at, :action_type], {:name=>"idx_user_actions_speed_up_user_all"})
-> 0.0033s
== 20150514043155 AddUserActionsAllIndex: migrated (0.0034s) ==================
== 20150525151759 SetDefaultS3Region: migrating ===============================
-- execute(" UPDATE site_settings\n SET value = 'us-east-1'\n WHERE name = 's3_region'\n AND LENGTH(COALESCE(value, '')) = 0\n")
-> 0.0003s
== 20150525151759 SetDefaultS3Region: migrated (0.0003s) ======================
== 20150609163211 MigrateEmbeddableHost: migrating ============================
-- execute("UPDATE site_settings SET name = 'embeddable_hosts', data_type = 9 WHERE name = 'embeddable_host'")
-> 0.0002s
== 20150609163211 MigrateEmbeddableHost: migrated (0.0002s) ===================
== 20150617080349 AddIndexOnPostNotifications: migrating ======================
-- add_index(:notifications, [:user_id, :topic_id, :post_number])
-> 0.0033s
== 20150617080349 AddIndexOnPostNotifications: migrated (0.0034s) =============
== 20150617233018 AddIndexTargetPostIdOnUserActions: migrating ================
-- add_index(:user_actions, [:target_post_id])
-> 0.0034s
== 20150617233018 AddIndexTargetPostIdOnUserActions: migrated (0.0035s) =======
== 20150617234511 AddStaffIndexToUsers: migrating =============================
-- add_index(:users, [:id], {:name=>"idx_users_admin", :where=>"admin"})
-> 0.0032s
-- add_index(:users, [:id], {:name=>"idx_users_moderator", :where=>"moderator"})
-> 0.0032s
== 20150617234511 AddStaffIndexToUsers: migrated (0.0065s) ====================
== 20150702201926 AddTopicTemplateToCategories: migrating =====================
-- add_column(:categories, :topic_template, :text, {:null=>true})
-> 0.0004s
== 20150702201926 AddTopicTemplateToCategories: migrated (0.0005s) ============
== 20150706215111 AddMobileToUserVisits: migrating ============================
-- add_column(:user_visits, :mobile, :boolean, {:default=>false})
-> 0.0063s
== 20150706215111 AddMobileToUserVisits: migrated (0.0064s) ===================
== 20150707163251 AddReportsIndexToUserVisits: migrating ======================
-- add_index(:user_visits, [:visited_at, :mobile])
-> 0.0035s
== 20150707163251 AddReportsIndexToUserVisits: migrated (0.0035s) =============
== 20150709021818 AddLikeCountToPostMenu: migrating ===========================
-- execute("UPDATE site_settings\nSET value = replace(value, 'like', 'like-count|like')\nWHERE name = 'post_menu'\nAND value NOT LIKE '%like-count%'\n")
-> 0.0002s
== 20150709021818 AddLikeCountToPostMenu: migrated (0.0003s) ==================
== 20150713203955 EnlargeUsersEmailField: migrating ===========================
-- change_column(:users, :email, :string, {:limit=>513})
-> 0.0028s
== 20150713203955 EnlargeUsersEmailField: migrated (0.0029s) ==================
== 20150724165259 AddIndexToPostCustomFields: migrating =======================
-- execute(" CREATE INDEX index_post_custom_fields_on_name_and_value ON post_custom_fields USING btree (name, left(value, 200))\n")
-> 0.0025s
== 20150724165259 AddIndexToPostCustomFields: migrated (0.0025s) ==============
== 20150724182342 AddActionCodeToPost: migrating ==============================
-- add_column(:posts, :action_code, :string, {:null=>true})
-> 0.0004s
== 20150724182342 AddActionCodeToPost: migrated (0.0005s) =====================
== 20150727193414 CreateUserFieldOptions: migrating ===========================
-- create_table(:user_field_options, {:force=>true})
-> 0.0063s
== 20150727193414 CreateUserFieldOptions: migrated (0.0063s) ==================
== 20150727210019 AddPinnedUntilToTopics: migrating ===========================
-- add_column(:topics, :pinned_until, :datetime, {:null=>true})
-> 0.0004s
== 20150727210019 AddPinnedUntilToTopics: migrated (0.0004s) ==================
== 20150727210748 AddQuarterlyToTopTopics: migrating ==========================
-- add_column(:top_topics, :quarterly_posts_count, :integer, {:default=>0, :null=>false})
-> 0.0448s
-- add_column(:top_topics, :quarterly_views_count, :integer, {:default=>0, :null=>false})
-> 0.0385s
-- add_column(:top_topics, :quarterly_likes_count, :integer, {:default=>0, :null=>false})
-> 0.0458s
-- add_column(:top_topics, :quarterly_score, :float, {:default=>0.0})
-> 0.0376s
-- add_column(:top_topics, :quarterly_op_likes_count, :integer, {:default=>0, :null=>false})
-> 0.0387s
-- add_index(:top_topics, [:quarterly_posts_count])
-> 0.0071s
-- add_index(:top_topics, [:quarterly_views_count])
-> 0.0030s
-- add_index(:top_topics, [:quarterly_likes_count])
-> 0.0031s
-- add_index(:top_topics, [:quarterly_op_likes_count])
-> 0.0032s
== 20150727210748 AddQuarterlyToTopTopics: migrated (0.2224s) =================
== 20150727230537 AddExampleColumnComments: migrating =========================
COMMENT ON TABLE posts
COMMENT ON COLUMN posts.post_number
COMMENT ON COLUMN posts.raw
COMMENT ON COLUMN posts.cooked
COMMENT ON COLUMN posts.reply_to_post_number
COMMENT ON COLUMN posts.reply_quoted
COMMENT ON TABLE topics
== 20150727230537 AddExampleColumnComments: migrated (0.0010s) ================
== 20150728004647 CorrectCustomFieldsMigration: migrating =====================
-- execute(" DROP INDEX index_post_custom_fields_on_name_and_value\n")
-> 0.0002s
-- execute(" CREATE INDEX index_post_custom_fields_on_name_and_value ON post_custom_fields USING btree (name, left(value, 200))\n")
-> 0.0027s
== 20150728004647 CorrectCustomFieldsMigration: migrated (0.0030s) ============
== 20150728210202 MigrateOldModeratorPosts: migrating =========================
-- execute("UPDATE posts SET action_code = 'closed.enabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now closed. New replies are no longer allowed.'")
-> 0.0003s
-- execute("UPDATE posts SET action_code = 'closed.disabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now opened. New replies are allowed.'")
-> 0.0002s
-- execute("UPDATE posts SET action_code = 'archived.enabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now archived. It is frozen and cannot be changed in any way.'")
-> 0.0002s
-- execute("UPDATE posts SET action_code = 'archived.disabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now unarchived. It is no longer frozen, and can be changed.'")
-> 0.0002s
-- execute("UPDATE posts SET action_code = 'pinned.enabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now pinned. It will appear at the top of its category until it is unpinned by staff for everyone, or by individual users for themselves.'")
-> 0.0002s
-- execute("UPDATE posts SET action_code = 'pinned.disabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now unpinned. It will no longer appear at the top of its category.'")
-> 0.0002s
-- execute("UPDATE posts SET action_code = 'pinned_globally.enabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now pinned globally. It will appear at the top of its category and all topic lists until it is unpinned by staff for everyone, or by individual users for themselves.'")
-> 0.0002s
-- execute("UPDATE posts SET action_code = 'pinned_globally.disabled', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = 'This topic is now unpinned. It will no longer appear at the top of its category.'")
-> 0.0002s
== 20150728210202 MigrateOldModeratorPosts: migrated (0.0028s) ================
== 20150729150523 MigrateAutoClosePosts: migrating ============================
-- execute("UPDATE posts SET action_code = 'autoclosed.enabled', post_type = 3 WHERE post_type = 2 AND (raw ~* 'This topic was automatically closed after 1 day. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed after \\d+ days. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed after 1 hour. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed after \\d+ hours. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed 1 day after the last reply. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed \\d+ days after the last reply. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed 1 hour after the last reply. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed \\d+ hours after the last reply. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed 1 minute after the last reply. New replies are no longer allowed.' OR raw ~* 'This topic was automatically closed \\d+ minutes after the last reply. New replies are no longer allowed.')")
-> 0.0016s
== 20150729150523 MigrateAutoClosePosts: migrated (0.0020s) ===================
== 20150730154830 AddPositionToUserFields: migrating ==========================
-- add_column(:user_fields, :position, :integer, {:default=>0})
-> 0.0059s
-- execute("UPDATE user_fields SET position = (SELECT COUNT(*) from user_fields as uf2 where uf2.id < user_fields.id)")
-> 0.0003s
== 20150730154830 AddPositionToUserFields: migrated (0.0062s) =================
== 20150731225331 MigrateOldMovedPosts: migrating =============================
-- execute("UPDATE posts SET post_type = 3, action_code = 'split_topic' WHERE post_type = 2 AND raw ~* '^I moved [a\\d]+ posts? to a new topic:'")
-> 0.0003s
-- execute("UPDATE posts SET post_type = 3, action_code = 'split_topic' WHERE post_type = 2 AND raw ~* '^I moved [a\\d]+ posts? to an existing topic:'")
-> 0.0003s
== 20150731225331 MigrateOldMovedPosts: migrated (0.0007s) ====================
== 20150802233112 AddPostStats: migrating =====================================
-- add_column(:drafts, :revisions, :int, {:null=>false, :default=>1})
-> 0.0076s
-- create_table(:post_stats)
-> 0.0038s
-- add_index(:post_stats, [:post_id])
-> 0.0035s
== 20150802233112 AddPostStats: migrated (0.0150s) ============================
== 20150806210727 AddEmbeddedCssToSiteCustomizations: migrating ===============
-- add_column(:site_customizations, :embedded_css, :text)
-> 0.0003s
-- add_column(:site_customizations, :embedded_css_baked, :text)
-> 0.0002s
== 20150806210727 AddEmbeddedCssToSiteCustomizations: migrated (0.0006s) ======
== 20150818190757 CreateEmbeddableHosts: migrating ============================
-- create_table(:embeddable_hosts, {:force=>true})
-> 0.0060s
-- execute("SELECT c.id FROM categories AS c\n INNER JOIN site_settings AS s ON s.value = c.name\n WHERE s.name = 'embed_category'")
-> 0.0006s
-- execute("SELECT value FROM site_settings WHERE name = 'uncategorized_category_id'")
-> 0.0001s
-- execute("SELECT value FROM site_settings WHERE name = 'embeddable_hosts'")
-> 0.0001s
-- execute("DELETE FROM site_settings WHERE name IN ('embeddable_hosts', 'embed_category')")
-> 0.0001s
== 20150818190757 CreateEmbeddableHosts: migrated (0.0072s) ===================
== 20150822141540 FixMigratedHosts: migrating =================================
-- execute("UPDATE embeddable_hosts SET host = regexp_replace(host, '^https?://', '', 'i')")
-> 0.0003s
== 20150822141540 FixMigratedHosts: migrated (0.0003s) ========================
== 20150828155137 AddSuppressFromHomepageToCategory: migrating ================
-- add_column(:categories, :suppress_from_homepage, :boolean, {:default=>false})
-> 0.0144s
== 20150828155137 AddSuppressFromHomepageToCategory: migrated (0.0144s) =======
== 20150901192313 AddGrantTrustLevelToGroups: migrating =======================
-- add_column(:groups, :grant_trust_level, :integer)
-> 0.0003s
== 20150901192313 AddGrantTrustLevelToGroups: migrated (0.0004s) ==============
== 20150914021445 CreateUserProfileViews: migrating ===========================
-- create_table(:user_profile_views)
-> 0.0085s
-- add_index(:user_profile_views, :user_profile_id)
-> 0.0032s
-- add_index(:user_profile_views, :user_id)
-> 0.0032s
-- add_index(:user_profile_views, [:viewed_at, :ip_address, :user_profile_id], {:where=>"user_id IS NULL", :unique=>true, :name=>"unique_profile_view_ip"})
-> 0.0085s
-- add_index(:user_profile_views, [:viewed_at, :user_id, :user_profile_id], {:where=>"user_id IS NOT NULL", :unique=>true, :name=>"unique_profile_view_user"})
-> 0.0033s
== 20150914021445 CreateUserProfileViews: migrated (0.0270s) ==================
== 20150914034541 AddViewsToUserProfile: migrating ============================
-- add_column(:user_profiles, :views, :integer, {:default=>0, :null=>false})
-> 0.0083s
== 20150914034541 AddViewsToUserProfile: migrated (0.0083s) ===================
== 20150917071017 AddCategoryIdToUserHistories: migrating =====================
-- add_column(:user_histories, :category_id, :integer)
-> 0.0003s
-- add_index(:user_histories, :category_id)
-> 0.0034s
== 20150917071017 AddCategoryIdToUserHistories: migrated (0.0038s) ============
== 20150918004206 AddUserIdGroupIdIndexToGroupUsers: migrating ================
-- add_index(:group_users, [:user_id, :group_id], {:unique=>true})
-> 0.0036s
== 20150918004206 AddUserIdGroupIdIndexToGroupUsers: migrated (0.0036s) =======
== 20150924022040 AddFancyTitleToTopic: migrating =============================
-- add_column(:topics, :fancy_title, :string, {:limit=>400, :null=>true})
-> 0.0004s
== 20150924022040 AddFancyTitleToTopic: migrated (0.0004s) ====================
== 20150925000915 ExcludeWhispersFromBadges: migrating ========================
-- execute("DROP VIEW badge_posts")
-> 0.0007s
-- execute("CREATE VIEW badge_posts AS\n SELECT p.*\n FROM posts p\n JOIN topics t ON t.id = p.topic_id\n JOIN categories c ON c.id = t.category_id\n WHERE c.allow_badges AND\n p.deleted_at IS NULL AND\n t.deleted_at IS NULL AND\n NOT c.read_restricted AND\n t.visible AND\n p.post_type IN (1,2,3)\n ")
-> 0.0033s
== 20150925000915 ExcludeWhispersFromBadges: migrated (0.0042s) ===============
== 20151016163051 MergePollsVotes: migrating ==================================
== 20151016163051 MergePollsVotes: migrated (0.0175s) =========================
== 20151103233815 AddLowerTitleIndexOnTopics: migrating =======================
-- execute("CREATE INDEX index_topics_on_lower_title ON topics (LOWER(title))")
-> 0.0026s
== 20151103233815 AddLowerTitleIndexOnTopics: migrated (0.0027s) ==============
== 20151105181635 AddStagedToUser: migrating ==================================
-- add_column(:users, :staged, :boolean, {:null=>false, :default=>false})
-> 0.0281s
== 20151105181635 AddStagedToUser: migrated (0.0281s) =========================
== 20151107041044 FixIncorrectTopicCreatorAfterMove: migrating ================
-- execute("UPDATE topics SET user_id = p.user_id\n FROM posts p\n WHERE p.topic_id = topics.id AND\n p.post_number = 1 AND\n p.user_id <> topics.user_id")
-> 0.0007s
== 20151107041044 FixIncorrectTopicCreatorAfterMove: migrated (0.0008s) =======
== 20151107042241 AddOwnerToGroupUsers: migrating =============================
-- add_column(:group_users, :owner, :boolean, {:null=>false, :default=>false})
-> 0.0132s
== 20151107042241 AddOwnerToGroupUsers: migrated (0.0133s) ====================
== 20151109124147 DropGroupManagers: migrating ================================
-- execute("UPDATE group_users SET owner = true\n WHERE exists (SELECT 1 FROM group_managers m\n WHERE m.group_id = group_users.group_id AND\n m.user_id = group_users.user_id)")
-> 0.0005s
-- drop_table("group_managers")
-> 0.0005s
== 20151109124147 DropGroupManagers: migrated (0.0011s) =======================
== 20151113205046 CreateTranslationOverrides: migrating =======================
-- create_table(:translation_overrides, {:force=>true})
-> 0.0068s
-- add_index(:translation_overrides, [:locale, :translation_key], {:unique=>true})
-> 0.0035s
== 20151113205046 CreateTranslationOverrides: migrated (0.0103s) ==============
== 20151117165756 AddAutomaticallyUnpinTopicsToUsers: migrating ===============
-- add_column(:users, :automatically_unpin_topics, :boolean, {:nullabe=>false, :default=>true})
-> 0.0254s
== 20151117165756 AddAutomaticallyUnpinTopicsToUsers: migrated (0.0255s) ======
== 20151124172631 AddIsSupportToCategories: migrating =========================
-- add_column(:categories, :is_support, :boolean, {:default=>false, :null=>false})
-> 0.0154s
== 20151124172631 AddIsSupportToCategories: migrated (0.0155s) ================
== 20151124192339 RenameNinjaEdit: migrating ==================================
-- execute("UPDATE site_settings SET name = 'editing_grace_period' WHERE name = 'ninja_edit_window'")
-> 0.0002s
== 20151124192339 RenameNinjaEdit: migrated (0.0002s) =========================
== 20151125194322 RemoveSiteText: migrating ===================================
-- execute("INSERT INTO translation_overrides (locale, translation_key, value, created_at, updated_at)\n SELECT 'en',\n CASE\n WHEN text_type = 'usage_tips' THEN 'system_messages.usage_tips.text_body_template'\n WHEN text_type = 'education_new_topic' THEN 'education.new-topic'\n WHEN text_type = 'education_new_reply' THEN 'education.new-reply'\n WHEN text_type = 'login_required_welcome_message' THEN 'login_required.welcome_message'\n END,\n value,\n created_at,\n updated_at\n FROM site_texts\n WHERE text_type in ('usage_tips',\n 'education_new_topic',\n 'education_new_reply',\n 'login_required_welcome_message')")
-> 0.0004s
-- drop_table(:site_texts)
-> 0.0004s
== 20151125194322 RemoveSiteText: migrated (0.0009s) ==========================
== 20151126173356 RenameIsSupportToContainsMessages: migrating ================
-- rename_column(:categories, :is_support, :contains_messages)
-> 0.0017s
== 20151126173356 RenameIsSupportToContainsMessages: migrated (0.0017s) =======
== 20151126233623 AddBakedHeadAndBodyToSiteCustomizations: migrating ==========
-- add_column(:site_customizations, :head_tag_baked, :text)
-> 0.0003s
-- add_column(:site_customizations, :body_tag_baked, :text)
-> 0.0002s
== 20151126233623 AddBakedHeadAndBodyToSiteCustomizations: migrated (0.0006s) =
== 20151127011837 AddHeaderAndFooterBakedToSiteCustomizations: migrating ======
-- add_column(:site_customizations, :header_baked, :text)
-> 0.0003s
-- add_column(:site_customizations, :mobile_header_baked, :text)
-> 0.0002s
-- add_column(:site_customizations, :footer_baked, :text)
-> 0.0002s
-- add_column(:site_customizations, :mobile_footer_baked, :text)
-> 0.0002s
== 20151127011837 AddHeaderAndFooterBakedToSiteCustomizations: migrated (0.0011s)
== 20151201035631 AddGroupMentions: migrating =================================
-- create_table(:group_mentions)
-> 0.0041s
-- add_index(:group_mentions, [:post_id, :group_id], {:unique=>true})
-> 0.0034s
-- add_index(:group_mentions, [:group_id, :post_id], {:unique=>true})
-> 0.0075s
== 20151201035631 AddGroupMentions: migrated (0.0151s) ========================
== 20151201161726 AddIncomingEmailToGroups: migrating =========================
-- add_column(:groups, :incoming_email, :string, {:null=>true})
-> 0.0003s
-- add_index(:groups, :incoming_email, {:unique=>true})
-> 0.0035s
== 20151201161726 AddIncomingEmailToGroups: migrated (0.0039s) ================
== 20151214165852 AddNotificationLevelToGroupUsers: migrating =================
-- add_column(:group_users, :notification_level, :integer, {:default=>3, :null=>false})
-> 0.0084s
== 20151214165852 AddNotificationLevelToGroupUsers: migrated (0.0085s) ========
== 20151218232200 AddUniqueIndexToCategoryUsers: migrating ====================
-- execute("DELETE FROM category_users cu USING category_users cu1\n WHERE cu.user_id = cu1.user_id AND\n cu.category_id = cu1.category_id AND\n cu.notification_level = cu1.notification_level AND\n cu.id < cu1.id\n")
-> 0.0004s
-- add_index(:category_users, [:user_id, :category_id, :notification_level], {:name=>"idx_category_users_u1", :unique=>true})
-> 0.0036s
-- add_index(:category_users, [:category_id, :user_id, :notification_level], {:name=>"idx_category_users_u2", :unique=>true})
-> 0.0033s
== 20151218232200 AddUniqueIndexToCategoryUsers: migrated (0.0074s) ===========
== 20151219045559 AddHasMessagesToGroups: migrating ===========================
-- add_column(:groups, :has_messages, :boolean, {:default=>false, :null=>false})
-> 0.0104s
-- execute(" UPDATE groups g SET has_messages = true\n WHERE exists(SELECT group_id FROM topic_allowed_groups WHERE group_id = g.id)\n")
-> 0.0005s
== 20151219045559 AddHasMessagesToGroups: migrated (0.0110s) ==================
== 20151220232725 AddUserArchivedMessagesGroupArchivedMessages: migrating =====
-- create_table(:user_archived_messages)
-> 0.0042s
-- add_index(:user_archived_messages, [:user_id, :topic_id], {:unique=>true})
-> 0.0035s
-- create_table(:group_archived_messages)
-> 0.0035s
-- add_index(:group_archived_messages, [:group_id, :topic_id], {:unique=>true})
-> 0.0034s
== 20151220232725 AddUserArchivedMessagesGroupArchivedMessages: migrated (0.0147s)
== 20160108051129 FixIncorrectUserHistory: migrating ==========================
-- execute("SELECT min(id) FROM user_histories WHERE (action = 16 AND previous_value in ('0','1','2','3','4')) OR\n(action = 19 AND target_user_id IS NULL AND details IS NOT NULL)\n")
-> 0.0005s
-- execute("SELECT max(id) FROM user_histories WHERE (action = 16 AND previous_value in ('0','1','2','3','4')) OR\n(action = 19 AND target_user_id IS NULL AND details IS NOT NULL)\n")
-> 0.0003s
== 20160108051129 FixIncorrectUserHistory: migrated (0.0009s) =================
== 20160110053003 ArchiveSystemMessagesWithNoReplies: migrating ===============
-- execute("\n INSERT INTO user_archived_messages (user_id, topic_id, created_at, updated_at)\n SELECT p.user_id, p.topic_id, p.created_at, p.updated_at\n FROM posts p\n JOIN topics t ON t.id = p.topic_id\n LEFT JOIN user_archived_messages um ON um.user_id = p.user_id AND um.topic_id = p.topic_id\n WHERE t.subtype = 'system_message' AND\n t.posts_count = 1 AND\n t.archetype = 'private_message' AND\n um.id IS NULL AND\n p.user_id IS NOT NULL AND\n p.topic_id IS NOT NULL AND\n p.post_number = 1\n")
-> 0.0008s
== 20160110053003 ArchiveSystemMessagesWithNoReplies: migrated (0.0008s) ======
== 20160112025852 RemoveUsersFromTopicAllowedUsers: migrating =================
-- execute(" DELETE FROM topic_allowed_users tu\n USING topic_allowed_groups tg\n JOIN group_users gu ON gu.group_id = tg.group_id\n WHERE tu.user_id = gu.user_id AND tg.topic_id = tu.topic_id\n")
-> 0.0007s
== 20160112025852 RemoveUsersFromTopicAllowedUsers: migrated (0.0007s) ========
== 20160112101818 RemoveContainsMessageOnCategory: migrating ==================
-- remove_column(:categories, :contains_messages)
-> 0.0004s
== 20160112101818 RemoveContainsMessageOnCategory: migrated (0.0004s) =========
== 20160112104733 AddContainsMessagesBackToCategories: migrating ==============
-- add_column(:categories, :contains_messages, :boolean)
-> 0.0003s
== 20160112104733 AddContainsMessagesBackToCategories: migrated (0.0004s) =====
== 20160113160742 CreateIncomingEmails: migrating =============================
-- create_table(:incoming_emails)
-> 0.0110s
-- add_index(:incoming_emails, :created_at)
-> 0.0034s
-- add_index(:incoming_emails, :message_id)
-> 0.0035s
-- add_index(:incoming_emails, :error)
-> 0.0032s
== 20160113160742 CreateIncomingEmails: migrated (0.0214s) ====================
== 20160118174335 RebakeHtmlCustomizations: migrating =========================
-- execute("UPDATE site_customizations SET body_tag_baked = NULL,\n head_tag_baked = NULL,\n header_baked = NULL,\n mobile_header_baked = NULL,\n footer_baked = NULL,\n mobile_footer_baked = NULL")
-> 0.0003s
== 20160118174335 RebakeHtmlCustomizations: migrated (0.0003s) ================
== 20160118233631 BackfillIncomingEmails: migrating ===========================
-- execute(" INSERT INTO incoming_emails (post_id, created_at, updated_at, user_id, topic_id, message_id, from_address, to_addresses, subject)\n SELECT posts.id\n , posts.created_at\n , posts.created_at\n , posts.user_id\n , posts.topic_id\n , array_to_string(regexp_matches(posts.raw_email, '^ *Message-Id: .*<([^>]+)>', 'im'), '')\n , users.email\n , array_to_string(regexp_matches(array_to_string(regexp_matches(posts.raw_email, '^to:.+$', 'im'), ''), '[^< \"''(]+@[^> \"'')]+'), '')\n , topics.title\n FROM posts\n JOIN topics ON posts.topic_id = topics.id\n JOIN users ON posts.user_id = users.id\n WHERE posts.user_id IS NOT NULL\n AND posts.topic_id IS NOT NULL\n AND posts.via_email = 't'\n AND posts.raw_email ~* 'Message-Id'\n ORDER BY posts.id;\n")
-> 0.0013s
== 20160118233631 BackfillIncomingEmails: migrated (0.0013s) ==================
== 20160127105314 ChangeDefaultNotificationLevelOnGroups: migrating ===========
-- execute("UPDATE group_users SET notification_level = 2")
-> 0.0002s
-- change_column(:group_users, :notification_level, :integer, {:null=>false, :default=>2})
-> 0.0021s
== 20160127105314 ChangeDefaultNotificationLevelOnGroups: migrated (0.0023s) ==
== 20160127222802 MigrateUncategorizedDescriptionSetting: migrating ===========
-- execute("INSERT INTO translation_overrides (locale, translation_key, value, created_at, updated_at)\n SELECT 'en', 'category.uncategorized_description', value, created_at, updated_at\n FROM site_settings\n WHERE name = 'uncategorized_description'\n AND value <> 'Topics that don''t need a category, or don''t fit into any other existing category.'")
-> 0.0002s
-- execute("DELETE FROM site_settings WHERE name = 'uncategorized_description'")
-> 0.0001s
== 20160127222802 MigrateUncategorizedDescriptionSetting: migrated (0.0005s) ==
== Seed from /var/www/discourse/db/fixtures/001_categories.rb
== Seed from /var/www/discourse/db/fixtures/002_groups.rb
== Seed from /var/www/discourse/db/fixtures/003_post_action_types.rb
- PostActionType {:id=>1, :name_key=>"bookmark", :is_flag=>false, :position=>1}
- PostActionType {:id=>2, :name_key=>"like", :is_flag=>false, :icon=>"heart", :position=>2}
- PostActionType {:id=>3, :name_key=>"off_topic", :is_flag=>true, :position=>3}
- PostActionType {:id=>4, :name_key=>"inappropriate", :is_flag=>true, :position=>4}
- PostActionType {:id=>5, :name_key=>"vote", :is_flag=>false, :position=>5}
- PostActionType {:id=>8, :name_key=>"spam", :is_flag=>true, :position=>6}
- PostActionType {:id=>6, :name_key=>"notify_user", :is_flag=>true, :position=>7}
- PostActionType {:id=>7, :name_key=>"notify_moderators", :is_flag=>true, :position=>8}
== Seed from /var/www/discourse/db/fixtures/004_screened_ip_addresses.rb
- ScreenedIpAddress {:id=>1, :ip_address=>"10.0.0.0/8", :action_type=>2}
- ScreenedIpAddress {:id=>2, :ip_address=>"192.168.0.0/16", :action_type=>2}
- ScreenedIpAddress {:id=>3, :ip_address=>"127.0.0.0/8", :action_type=>2}
- ScreenedIpAddress {:id=>4, :ip_address=>"172.16.0.0/12", :action_type=>2}
- ScreenedIpAddress {:id=>5, :ip_address=>"fc00::/7", :action_type=>2}
== Seed from /var/www/discourse/db/fixtures/005_badge_types.rb
- BadgeType {:id=>1, :name=>"Gold"}
- BadgeType {:id=>2, :name=>"Silver"}
- BadgeType {:id=>3, :name=>"Bronze"}
== Seed from /var/www/discourse/db/fixtures/006_badges.rb
- BadgeGrouping {:id=>1, :name=>"Getting Started", :default_position=>10}
- BadgeGrouping {:id=>2, :name=>"Community", :default_position=>11}
- BadgeGrouping {:id=>3, :name=>"Posting", :default_position=>12}
- BadgeGrouping {:id=>4, :name=>"Trust Level", :default_position=>13}
- BadgeGrouping {:id=>5, :name=>"Other", :default_position=>14}
- Badge {:id=>1, :default_name=>"Basic User", :badge_type_id=>3, :query=>"\n SELECT u.id user_id, current_timestamp granted_at FROM users u\n WHERE trust_level >= 1 AND (\n :backfill OR u.id IN (:user_ids)\n )\n", :default_badge_grouping_id=>4, :trigger=>4, :default_allow_title=>false, :default_icon=>"fa-user", :system=>true}
- Badge {:id=>2, :default_name=>"Member", :badge_type_id=>3, :query=>"\n SELECT u.id user_id, current_timestamp granted_at FROM users u\n WHERE trust_level >= 2 AND (\n :backfill OR u.id IN (:user_ids)\n )\n", :default_badge_grouping_id=>4, :trigger=>4, :default_allow_title=>false, :default_icon=>"fa-user", :system=>true}
- Badge {:id=>3, :default_name=>"Regular", :badge_type_id=>2, :query=>"\n SELECT u.id user_id, current_timestamp granted_at FROM users u\n WHERE trust_level >= 3 AND (\n :backfill OR u.id IN (:user_ids)\n )\n", :default_badge_grouping_id=>4, :trigger=>4, :default_allow_title=>true, :default_icon=>"fa-user", :system=>true}
- Badge {:id=>4, :default_name=>"Leader", :badge_type_id=>1, :query=>"\n SELECT u.id user_id, current_timestamp granted_at FROM users u\n WHERE trust_level >= 4 AND (\n :backfill OR u.id IN (:user_ids)\n )\n", :default_badge_grouping_id=>4, :trigger=>4, :default_allow_title=>true, :default_icon=>"fa-user", :system=>true}
- Badge {:id=>17, :default_name=>"Reader", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>false, :show_posts=>false, :query=>" SELECT id user_id, current_timestamp granted_at\n FROM users\n WHERE id IN\n (\n SELECT pt.user_id\n FROM post_timings pt\n JOIN badge_posts b ON b.post_number = pt.post_number AND\n b.topic_id = pt.topic_id\n JOIN topics t ON t.id = pt.topic_id\n LEFT JOIN user_badges ub ON ub.badge_id = 17 AND ub.user_id = pt.user_id\n WHERE ub.id IS NULL AND t.posts_count > 100\n GROUP BY pt.user_id, pt.topic_id, t.posts_count\n HAVING count(*) >= t.posts_count\n )\n", :default_badge_grouping_id=>1, :auto_revoke=>false, :system=>true}
- Badge {:id=>16, :default_name=>"Read Guidelines", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>false, :show_posts=>false, :query=>" SELECT user_id, read_faq granted_at\n FROM user_stats\n WHERE read_faq IS NOT NULL AND (user_id IN (:user_ids) OR :backfill)\n", :default_badge_grouping_id=>1, :trigger=>8, :system=>true}
- Badge {:id=>14, :default_name=>"First Link", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>true, :show_posts=>true, :query=>" SELECT l.user_id, l.post_id, l.created_at granted_at\n FROM\n (\n SELECT MIN(l1.id) id\n FROM topic_links l1\n JOIN badge_posts p1 ON p1.id = l1.post_id\n JOIN badge_posts p2 ON p2.id = l1.link_post_id\n WHERE NOT reflection AND p1.topic_id <> p2.topic_id AND not quote AND\n (:backfill OR ( p1.id in (:post_ids) ))\n GROUP BY l1.user_id\n ) ids\n JOIN topic_links l ON l.id = ids.id\n", :default_badge_grouping_id=>1, :trigger=>2, :system=>true}
- Badge {:id=>15, :default_name=>"First Quote", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>true, :show_posts=>true, :query=>" SELECT ids.user_id, q.post_id, q.created_at granted_at\n FROM\n (\n SELECT p1.user_id, MIN(q1.id) id\n FROM quoted_posts q1\n JOIN badge_posts p1 ON p1.id = q1.post_id\n JOIN badge_posts p2 ON p2.id = q1.quoted_post_id\n WHERE (:backfill OR ( p1.id IN (:post_ids) ))\n GROUP BY p1.user_id\n ) ids\n JOIN quoted_posts q ON q.id = ids.id\n", :default_badge_grouping_id=>1, :trigger=>2, :system=>true}
- Badge {:id=>11, :default_name=>"First Like", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>true, :show_posts=>true, :query=>" SELECT pa1.user_id, pa1.created_at granted_at, pa1.post_id\n FROM (\n SELECT pa.user_id, min(pa.id) id\n FROM post_actions pa\n JOIN badge_posts p on p.id = pa.post_id\n WHERE post_action_type_id = 2 AND\n (:backfill OR pa.post_id IN (:post_ids) )\n GROUP BY pa.user_id\n ) x\n JOIN post_actions pa1 on pa1.id = x.id\n", :default_badge_grouping_id=>1, :trigger=>1, :system=>true}
- Badge {:id=>13, :default_name=>"First Flag", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>true, :show_posts=>false, :query=>" SELECT pa1.user_id, pa1.created_at granted_at, pa1.post_id\n FROM (\n SELECT pa.user_id, min(pa.id) id\n FROM post_actions pa\n JOIN badge_posts p on p.id = pa.post_id\n WHERE post_action_type_id IN (3,4,7,8) AND\n (:backfill OR pa.post_id IN (:post_ids) )\n GROUP BY pa.user_id\n ) x\n JOIN post_actions pa1 on pa1.id = x.id\n", :default_badge_grouping_id=>2, :trigger=>1, :auto_revoke=>false, :system=>true}
- Badge {:id=>25, :default_name=>"Promoter", :default_icon=>"fa-user-plus", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>false, :show_posts=>false, :query=>"\n SELECT u.id user_id, current_timestamp granted_at\n FROM users u\n WHERE u.id IN (\n SELECT invited_by_id\n FROM invites i\n JOIN users u2 ON u2.id = i.user_id\n WHERE i.deleted_at IS NULL AND u2.active AND u2.trust_level >= 0 AND not u2.blocked\n GROUP BY invited_by_id\n HAVING COUNT(*) >= 1\n ) AND u.active AND NOT u.blocked AND u.id > 0 AND\n (:backfill OR u.id IN (:user_ids) )\n", :default_badge_grouping_id=>2, :trigger=>0, :auto_revoke=>true, :system=>true}
- Badge {:id=>26, :default_name=>"Campaigner", :default_icon=>"fa-user-plus", :badge_type_id=>2, :multiple_grant=>false, :target_posts=>false, :show_posts=>false, :query=>"\n SELECT u.id user_id, current_timestamp granted_at\n FROM users u\n WHERE u.id IN (\n SELECT invited_by_id\n FROM invites i\n JOIN users u2 ON u2.id = i.user_id\n WHERE i.deleted_at IS NULL AND u2.active AND u2.trust_level >= 1 AND not u2.blocked\n GROUP BY invited_by_id\n HAVING COUNT(*) >= 3\n ) AND u.active AND NOT u.blocked AND u.id > 0 AND\n (:backfill OR u.id IN (:user_ids) )\n", :default_badge_grouping_id=>2, :trigger=>0, :auto_revoke=>true, :system=>true}
- Badge {:id=>27, :default_name=>"Champion", :default_icon=>"fa-user-plus", :badge_type_id=>1, :multiple_grant=>false, :target_posts=>false, :show_posts=>false, :query=>"\n SELECT u.id user_id, current_timestamp granted_at\n FROM users u\n WHERE u.id IN (\n SELECT invited_by_id\n FROM invites i\n JOIN users u2 ON u2.id = i.user_id\n WHERE i.deleted_at IS NULL AND u2.active AND u2.trust_level >= 2 AND not u2.blocked\n GROUP BY invited_by_id\n HAVING COUNT(*) >= 5\n ) AND u.active AND NOT u.blocked AND u.id > 0 AND\n (:backfill OR u.id IN (:user_ids) )\n", :default_badge_grouping_id=>2, :trigger=>0, :auto_revoke=>true, :system=>true}
- Badge {:id=>12, :default_name=>"First Share", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>true, :show_posts=>true, :query=>" SELECT views.user_id, i2.post_id, i2.created_at granted_at\n FROM\n (\n SELECT i.user_id, MIN(i.id) i_id\n FROM incoming_links i\n JOIN badge_posts p on p.id = i.post_id\n WHERE i.user_id IS NOT NULL\n GROUP BY i.user_id\n ) as views\n JOIN incoming_links i2 ON i2.id = views.i_id\n", :default_badge_grouping_id=>1, :trigger=>0, :system=>true}
- Badge {:id=>21, :default_name=>"Nice Share", :badge_type_id=>3, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>" SELECT views.user_id, i2.post_id, i2.created_at granted_at\n FROM\n (\n SELECT i.user_id, MIN(i.id) i_id\n FROM incoming_links i\n JOIN badge_posts p on p.id = i.post_id\n WHERE i.user_id IS NOT NULL\n GROUP BY i.user_id,i.post_id\n HAVING COUNT(*) > 25\n ) as views\n JOIN incoming_links i2 ON i2.id = views.i_id\n", :default_badge_grouping_id=>2, :trigger=>0, :system=>true}
- Badge {:id=>22, :default_name=>"Good Share", :badge_type_id=>2, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>" SELECT views.user_id, i2.post_id, i2.created_at granted_at\n FROM\n (\n SELECT i.user_id, MIN(i.id) i_id\n FROM incoming_links i\n JOIN badge_posts p on p.id = i.post_id\n WHERE i.user_id IS NOT NULL\n GROUP BY i.user_id,i.post_id\n HAVING COUNT(*) > 300\n ) as views\n JOIN incoming_links i2 ON i2.id = views.i_id\n", :default_badge_grouping_id=>2, :trigger=>0, :system=>true}
- Badge {:id=>23, :default_name=>"Great Share", :badge_type_id=>1, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>" SELECT views.user_id, i2.post_id, i2.created_at granted_at\n FROM\n (\n SELECT i.user_id, MIN(i.id) i_id\n FROM incoming_links i\n JOIN badge_posts p on p.id = i.post_id\n WHERE i.user_id IS NOT NULL\n GROUP BY i.user_id,i.post_id\n HAVING COUNT(*) > 1000\n ) as views\n JOIN incoming_links i2 ON i2.id = views.i_id\n", :default_badge_grouping_id=>2, :trigger=>0, :system=>true}
- Badge {:id=>5, :default_name=>"Welcome", :badge_type_id=>3, :multiple_grant=>false, :target_posts=>true, :show_posts=>true, :query=>" SELECT p.user_id, min(post_id) post_id, min(pa.created_at) granted_at\n FROM post_actions pa\n JOIN badge_posts p on p.id = pa.post_id\n WHERE post_action_type_id = 2 AND\n (:backfill OR pa.post_id IN (:post_ids) )\n GROUP BY p.user_id\n", :default_badge_grouping_id=>2, :trigger=>1, :system=>true}
- Badge {:id=>9, :default_name=>"Autobiographer", :badge_type_id=>3, :multiple_grant=>false, :query=>" SELECT u.id user_id, current_timestamp granted_at\n FROM users u\n JOIN user_profiles up on u.id = up.user_id\n WHERE bio_raw IS NOT NULL AND LENGTH(TRIM(bio_raw)) > 10 AND\n uploaded_avatar_id IS NOT NULL AND\n (:backfill OR u.id IN (:user_ids) )\n", :default_badge_grouping_id=>1, :trigger=>8, :system=>true}
- Badge {:id=>10, :default_name=>"Editor", :badge_type_id=>3, :multiple_grant=>false, :query=>" SELECT p.user_id, min(p.id) post_id, min(p.created_at) granted_at\n FROM badge_posts p\n WHERE p.self_edits > 0 AND\n (:backfill OR p.id IN (:post_ids) )\n GROUP BY p.user_id\n", :default_badge_grouping_id=>2, :trigger=>2, :system=>true}
- Badge {:id=>6, :default_name=>"Nice Post", :badge_type_id=>3, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>"\n SELECT p.user_id, p.id post_id, p.updated_at granted_at\n FROM badge_posts p\n WHERE p.post_number > 1 AND p.like_count >= 10 AND\n (:backfill OR p.id IN (:post_ids) )\n", :default_badge_grouping_id=>3, :trigger=>1, :system=>true}
- Badge {:id=>7, :default_name=>"Good Post", :badge_type_id=>2, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>"\n SELECT p.user_id, p.id post_id, p.updated_at granted_at\n FROM badge_posts p\n WHERE p.post_number > 1 AND p.like_count >= 25 AND\n (:backfill OR p.id IN (:post_ids) )\n", :default_badge_grouping_id=>3, :trigger=>1, :system=>true}
- Badge {:id=>8, :default_name=>"Great Post", :badge_type_id=>1, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>"\n SELECT p.user_id, p.id post_id, p.updated_at granted_at\n FROM badge_posts p\n WHERE p.post_number > 1 AND p.like_count >= 50 AND\n (:backfill OR p.id IN (:post_ids) )\n", :default_badge_grouping_id=>3, :trigger=>1, :system=>true}
- Badge {:id=>18, :default_name=>"Nice Topic", :badge_type_id=>3, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>"\n SELECT p.user_id, p.id post_id, p.updated_at granted_at\n FROM badge_posts p\n WHERE p.post_number = 1 AND p.like_count >= 10 AND\n (:backfill OR p.id IN (:post_ids) )\n", :default_badge_grouping_id=>3, :trigger=>1, :system=>true}
- Badge {:id=>19, :default_name=>"Good Topic", :badge_type_id=>2, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>"\n SELECT p.user_id, p.id post_id, p.updated_at granted_at\n FROM badge_posts p\n WHERE p.post_number = 1 AND p.like_count >= 25 AND\n (:backfill OR p.id IN (:post_ids) )\n", :default_badge_grouping_id=>3, :trigger=>1, :system=>true}
- Badge {:id=>20, :default_name=>"Great Topic", :badge_type_id=>1, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>"\n SELECT p.user_id, p.id post_id, p.updated_at granted_at\n FROM badge_posts p\n WHERE p.post_number = 1 AND p.like_count >= 50 AND\n (:backfill OR p.id IN (:post_ids) )\n", :default_badge_grouping_id=>3, :trigger=>1, :system=>true}
- Badge {:id=>24, :default_name=>"Anniversary", :default_icon=>"fa-clock-o", :badge_type_id=>2, :query=>" SELECT u.id AS user_id, MIN(u.created_at + interval '1 year') AS granted_at\n FROM users u\n JOIN posts p ON p.user_id = u.id\n WHERE u.id > 0\n AND u.active\n AND NOT u.blocked\n AND u.created_at + interval '1 year' < now()\n AND p.deleted_at IS NULL\n AND NOT p.hidden\n AND p.created_at + interval '1 year' > now()\n AND (:backfill OR u.id IN (:user_ids))\n GROUP BY u.id\n HAVING COUNT(p.id) > 0\n", :default_badge_grouping_id=>2, :trigger=>0, :auto_revoke=>false, :system=>true}
- Badge {:id=>28, :default_name=>"Popular Link", :badge_type_id=>3, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>" SELECT tl.user_id, post_id, MIN(tl.created_at) granted_at\n FROM topic_links tl\n JOIN posts p ON p.id = post_id AND p.deleted_at IS NULL\n JOIN topics t ON t.id = p.topic_id AND t.deleted_at IS NULL AND t.archetype <> 'private_message'\n WHERE NOT tl.internal\n AND tl.clicks >= 50\n GROUP BY tl.user_id, tl.post_id\n", :default_badge_grouping_id=>2, :trigger=>0, :system=>true}
- Badge {:id=>29, :default_name=>"Hot Link", :badge_type_id=>2, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>" SELECT tl.user_id, post_id, MIN(tl.created_at) granted_at\n FROM topic_links tl\n JOIN posts p ON p.id = post_id AND p.deleted_at IS NULL\n JOIN topics t ON t.id = p.topic_id AND t.deleted_at IS NULL AND t.archetype <> 'private_message'\n WHERE NOT tl.internal\n AND tl.clicks >= 300\n GROUP BY tl.user_id, tl.post_id\n", :default_badge_grouping_id=>2, :trigger=>0, :system=>true}
- Badge {:id=>30, :default_name=>"Famous Link", :badge_type_id=>1, :multiple_grant=>true, :target_posts=>true, :show_posts=>true, :query=>" SELECT tl.user_id, post_id, MIN(tl.created_at) granted_at\n FROM topic_links tl\n JOIN posts p ON p.id = post_id AND p.deleted_at IS NULL\n JOIN topics t ON t.id = p.topic_id AND t.deleted_at IS NULL AND t.archetype <> 'private_message'\n WHERE NOT tl.internal\n AND tl.clicks >= 1000\n GROUP BY tl.user_id, tl.post_id\n", :default_badge_grouping_id=>2, :trigger=>0, :system=>true}
== Seed from /var/www/discourse/db/fixtures/009_users.rb
- User {:id=>-1, :name=>"system", :username=>"system", :username_lower=>"system", :email=>"no_email", :password=>"d57d8f421248ef1e53f128119c822881", :active=>true, :admin=>true, :moderator=>true, :email_direct=>false, :approved=>true, :email_private_messages=>false, :trust_level=>4}
== Seed from /var/www/discourse/db/fixtures/500_lounge_category.rb
== Seed from /var/www/discourse/db/fixtures/501_meta_category.rb
== Seed from /var/www/discourse/db/fixtures/502_staff_category.rb
== Seed from /var/www/discourse/db/fixtures/999_settings.rb
== Seed from /var/www/discourse/db/fixtures/999_topics.rb
Seeding welcome topics
I, [2016-01-31T22:34:48.021023 #38] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile'
I, [2016-01-31T22:34:53.469274 #683] INFO -- : Writing /var/www/discourse/public/assets/FontAwesome-1c0a94dc5e8a8d9db04e357eaaa388b9.otf
I, [2016-01-31T22:34:53.471984 #683] INFO -- : Writing /var/www/discourse/public/assets/fontawesome-webfont-e2f6015310d7f63fa1537ab9822f1446.eot
I, [2016-01-31T22:34:53.475333 #683] INFO -- : Writing /var/www/discourse/public/assets/fontawesome-webfont-827f7401e861ad6d7323e0b6be200412.svg
I, [2016-01-31T22:34:53.478057 #683] INFO -- : Writing /var/www/discourse/public/assets/fontawesome-webfont-f436f853ea7573a6b623eea9bc9d66ec.ttf
I, [2016-01-31T22:34:53.480497 #683] INFO -- : Writing /var/www/discourse/public/assets/fontawesome-webfont-90e687312466f7a4993c85399c116f2f.woff
I, [2016-01-31T22:34:53.482792 #683] INFO -- : Writing /var/www/discourse/public/assets/fontawesome-webfont-6d0ddb44b6016bd7adf993e5b9d47ae6.woff2
I, [2016-01-31T22:34:53.484562 #683] INFO -- : Writing /var/www/discourse/public/assets/chosen-sprite-8a7b0de8c79afad2d63363d145d7bf88.png
I, [2016-01-31T22:34:53.486309 #683] INFO -- : Writing /var/www/discourse/public/assets/favicon-16465536d00aeb9da2ca290e11c392b4.ico
I, [2016-01-31T22:34:53.488140 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/1282043220-favicon-441c1164492cfd82fcb1354eaacd429d.ico
I, [2016-01-31T22:34:53.489788 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/amazon-39970d950fbaec1718160041d85360bf.png
I, [2016-01-31T22:34:53.491529 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/apple-c309549cf49f942dc8e215a7b226e04e.png
I, [2016-01-31T22:34:53.493190 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/discourse-86a574c39af8a8a91ceb1653864f4075.png
I, [2016-01-31T22:34:53.495018 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/github-5fa3b2ccc92f5b98d37a0659af27fd10.png
I, [2016-01-31T22:34:53.496860 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_branding/logo_calendar_128px-679d97c594e49c2516d6e4148f3a199d.png
I, [2016-01-31T22:34:53.498741 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_branding/logo_docs_128px-8b10c5191f70ff981fafa1a0d02da504.png
I, [2016-01-31T22:34:53.500559 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_branding/logo_drive_128px-d022b8b148413a46ca0e479fd8e13c9e.png
I, [2016-01-31T22:34:53.502686 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_branding/logo_forms_128px-e008b7b0bd34786ded7f217618880a15.png
I, [2016-01-31T22:34:53.504410 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_branding/logo_sheets_128px-0be10a0e4a2de055b10947c45773ff48.png
I, [2016-01-31T22:34:53.506254 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_branding/logo_slides_128px-5f691996aeaca4ca52c176ebb53d9def.png
I, [2016-01-31T22:34:53.507987 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/google_play-98295ccf28cf32625e7ac1c911e0fca8.png
I, [2016-01-31T22:34:53.509749 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/rottentomatoes-b74810e5dc40fba50327844156787af9.png
I, [2016-01-31T22:34:53.511593 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/stackexchange-a6cbc6e0306560317a954c30f212f975.png
I, [2016-01-31T22:34:53.513340 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/twitter-9389be3611fd4dc8c32adb5a7b1ae0de.png
I, [2016-01-31T22:34:53.515102 #683] INFO -- : Writing /var/www/discourse/public/assets/favicons/wikipedia-0de28d211999427f24ae8b5a840f2935.png
I, [2016-01-31T22:34:53.516869 #683] INFO -- : Writing /var/www/discourse/public/assets/grippie-d28a6f65e22c0033dcf0d63883bcc590.png
I, [2016-01-31T22:34:53.518754 #683] INFO -- : Writing /var/www/discourse/public/assets/logo-dev-ff0fcd6922e8e1aa031304b1d3e424a6.png
I, [2016-01-31T22:34:53.520557 #683] INFO -- : Writing /var/www/discourse/public/assets/logo-single-dev-76ec62e48f4251d3fa00e42a29ae753b.png
I, [2016-01-31T22:34:53.522388 #683] INFO -- : Writing /var/www/discourse/public/assets/logo-single-de2a438ad98c6df5f93ac6ac57f0c9f3.png
I, [2016-01-31T22:34:53.524149 #683] INFO -- : Writing /var/www/discourse/public/assets/logo-50f2863a2f5ecac8825ee69b11dcfdbb.png
I, [2016-01-31T22:34:53.525819 #683] INFO -- : Writing /var/www/discourse/public/assets/select2-spinner-65869c1d0a2498dd002aa563048a2253.gif
I, [2016-01-31T22:34:53.527571 #683] INFO -- : Writing /var/www/discourse/public/assets/select2-20942152ca4c9717f914877da87804af.png
I, [2016-01-31T22:34:53.529352 #683] INFO -- : Writing /var/www/discourse/public/assets/select2x2-c0736823da71c0955b2fb807af671f0a.png
I, [2016-01-31T22:34:53.531264 #683] INFO -- : Writing /var/www/discourse/public/assets/spinner_96-8091be87c9cf1abef73e3899ec7645c1.gif
I, [2016-01-31T22:34:58.127795 #683] INFO -- : Writing /var/www/discourse/public/assets/admin-86aca193c4b4f0a440f9cce3a8fe66d0.js
I, [2016-01-31T22:35:11.384738 #683] INFO -- : Writing /var/www/discourse/public/assets/application-bdcd81b3e87a4283b7194972cf19261b.js
I, [2016-01-31T22:35:11.397690 #683] INFO -- : Writing /var/www/discourse/public/assets/defer/html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js
I, [2016-01-31T22:35:11.399523 #683] INFO -- : Writing /var/www/discourse/public/assets/discourse/controllers/application-8ec18ff701141e453a5a336f3a4b00f1.js
I, [2016-01-31T22:35:11.401250 #683] INFO -- : Writing /var/www/discourse/public/assets/discourse/helpers/application-1229be3e4d538a88468d81cd890dda26.js
I, [2016-01-31T22:35:11.402967 #683] INFO -- : Writing /var/www/discourse/public/assets/discourse/routes/application-c1a9cbc48626949e7d1193b7bcec23c8.js
I, [2016-01-31T22:35:11.431716 #683] INFO -- : Writing /var/www/discourse/public/assets/discourse/templates/application-946a53f6833af9d1f41c98f65f8786e1.js
I, [2016-01-31T22:35:11.433641 #683] INFO -- : Writing /var/www/discourse/public/assets/discourse/views/application-4829ac46be9a412a82f2878a8d83586d.js
I, [2016-01-31T22:35:11.439142 #683] INFO -- : Writing /var/www/discourse/public/assets/docs/yuidoc-cf304cb678763161e669e0722ddaf1c6.json
I, [2016-01-31T22:35:11.547555 #683] INFO -- : Writing /var/www/discourse/public/assets/ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js
I, [2016-01-31T22:35:11.802399 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/ar-a9654bbfcbd71c53cedaab3e89d0e980.js
I, [2016-01-31T22:35:11.882371 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js
I, [2016-01-31T22:35:11.974370 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/cs-c274b590dddaccb053ec4271ddc00e28.js
I, [2016-01-31T22:35:12.149616 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/da-c049d373543c74851fc212f1682b86c1.js
I, [2016-01-31T22:35:12.252027 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/de-300a3cc178064534997c67c34653e5ba.js
I, [2016-01-31T22:35:12.322283 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/en-ac1ff84c2e9ad2d00f67a868405c10f4.js
I, [2016-01-31T22:35:12.509878 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/es-1605aa9ae3b56e941b5920947e5611d3.js
I, [2016-01-31T22:35:12.611047 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/fa_IR-8b9ce601f08083a13168908bac9e0a1f.js
I, [2016-01-31T22:35:12.794586 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/fi-a2faf9974186d98b3d2efcb71805f5ef.js
I, [2016-01-31T22:35:12.894438 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/fr-40350bccb821cec6f56b06d2b56baf16.js
I, [2016-01-31T22:35:12.997230 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/he-8daa45e617c9d196f0092e70e2ba7a4a.js
I, [2016-01-31T22:35:13.130989 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/id-48a64233331c145a2fd7b1f61614dd5a.js
I, [2016-01-31T22:35:13.229938 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/it-095171ae751fd41e261f9133f8ef5cbe.js
I, [2016-01-31T22:35:13.316857 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/ja-13d9197ac65d0f57f94e5afaf18bd8e0.js
I, [2016-01-31T22:35:13.503413 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js
I, [2016-01-31T22:35:13.587466 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/nb_NO-099cad0690efe15fe3fb5f0bef12f653.js
I, [2016-01-31T22:35:13.682433 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/nl-b8c8bde21afca02a773eaa745ce413fd.js
I, [2016-01-31T22:35:13.936783 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js
I, [2016-01-31T22:35:14.037719 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/pt-8bbcbed608e0a5e8dc4163a122800a44.js
I, [2016-01-31T22:35:14.131424 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/pt_BR-4bb53980cf16ae7813f8bab6982c026d.js
I, [2016-01-31T22:35:14.317816 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/ro-4ecf8f14ab5854eae29268a3f107a17c.js
I, [2016-01-31T22:35:14.427792 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/ru-f73cff82522c3f1ac517940757ac5318.js
I, [2016-01-31T22:35:14.634989 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/sk-4bacbc32eb451021d8c07451ac76aacd.js
I, [2016-01-31T22:35:14.726162 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/sq-30aa42d53fe04263db874b46d2e5b9ce.js
I, [2016-01-31T22:35:14.809182 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/sv-b679adcc6d3e01f763dc0bb89d924d31.js
I, [2016-01-31T22:35:14.996316 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/te-d90ba364c584553995dcd42a266052d1.js
I, [2016-01-31T22:35:15.094083 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js
I, [2016-01-31T22:35:15.166676 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/uk-dff04a25279059a7e4b9573965d1dd1d.js
I, [2016-01-31T22:35:15.374424 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/zh_CN-dfa074ae965ceb102a5308e651591fef.js
I, [2016-01-31T22:35:15.461017 #683] INFO -- : Writing /var/www/discourse/public/assets/locales/zh_TW-61a9af1f2d908c8becfae75be768997c.js
I, [2016-01-31T22:35:15.464540 #683] INFO -- : Writing /var/www/discourse/public/assets/preload_store-d16a3675434b5a0043157cfc2b850471.js
I, [2016-01-31T22:35:15.737206 #683] INFO -- : Writing /var/www/discourse/public/assets/vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js
I, [2016-01-31T22:35:16.754967 #683] INFO -- : Writing /var/www/discourse/public/assets/admin-28e1ad061351fac4980f2fc8fd3c6f9c.css
I, [2016-01-31T22:35:20.447943 #683] INFO -- : Writing /var/www/discourse/public/assets/common-908c93f18030d148e6132f96d81b4ff3.css
I, [2016-01-31T22:35:25.377283 #683] INFO -- : Writing /var/www/discourse/public/assets/desktop-8dfdfc46c32f7b3fc1824dfd53d940ce.css
I, [2016-01-31T22:35:25.702602 #683] INFO -- : Writing /var/www/discourse/public/assets/embed-68c3f23ae6943a02623724dfa68fca58.css
I, [2016-01-31T22:35:29.681255 #683] INFO -- : Writing /var/www/discourse/public/assets/mobile-1ab713c7b5c089db101f6ad80c1578a0.css
I, [2016-01-31T22:35:29.683804 #683] INFO -- : Writing /var/www/discourse/public/assets/break_string-acd906f9185938240ab8b1b796f21d89.js
I, [2016-01-31T22:35:29.689103 #683] INFO -- : Writing /var/www/discourse/public/assets/browser-update-1b088c371e098d02d2b87570660d5d68.js
I, [2016-01-31T22:35:30.933611 #683] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-app-8a0a3f6df0a793205c4853458093b9cf.css
I, [2016-01-31T22:35:30.938821 #683] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-app-fc45ae9f5dc46a536ad03487a4ce173f.js
I, [2016-01-31T22:35:31.037322 #683] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-vendor-990e81f2e0703738823fe5de31b92060.css
I, [2016-01-31T22:35:31.053022 #683] INFO -- : Writing /var/www/discourse/public/assets/docker-manager-vendor-e62406a2f5676e280b40622751069e76.js
I, [2016-01-31T22:35:31.056479 #683] INFO -- : Writing /var/www/discourse/public/assets/images/docker-manager-ea64623b074c8ec2b0303bae846e21e6.png
Start compiling CSS: 2016-01-31 22:35:31 UTC
Compiling css for default
target: desktop desktop_38ca0e7f56217d5116b97a0b4e5e3bae1921d8d6.css
target: mobile mobile_38ca0e7f56217d5116b97a0b4e5e3bae1921d8d6.css
target: desktop_rtl desktop_rtl_38ca0e7f56217d5116b97a0b4e5e3bae1921d8d6.css
target: mobile_rtl mobile_rtl_38ca0e7f56217d5116b97a0b4e5e3bae1921d8d6.css
Done compiling CSS: 2016-01-31 22:35:44 UTC
Compressing: admin-86aca193c4b4f0a440f9cce3a8fe66d0.js
uglifyjs '/var/www/discourse/public/assets/_admin-86aca193c4b4f0a440f9cce3a8fe66d0.js' -p relative -c -m -o '/var/www/discourse/public/assets/admin-86aca193c4b4f0a440f9cce3a8fe66d0.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/admin-86aca193c4b4f0a440f9cce3a8fe66d0.js.map' --source-map-url '/assets/admin-86aca193c4b4f0a440f9cce3a8fe66d0.js.map'
gzip /var/www/discourse/public/assets/admin-86aca193c4b4f0a440f9cce3a8fe66d0.js
Compressing: application-bdcd81b3e87a4283b7194972cf19261b.js
uglifyjs '/var/www/discourse/public/assets/_application-bdcd81b3e87a4283b7194972cf19261b.js' -p relative -c -m -o '/var/www/discourse/public/assets/application-bdcd81b3e87a4283b7194972cf19261b.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/application-bdcd81b3e87a4283b7194972cf19261b.js.map' --source-map-url '/assets/application-bdcd81b3e87a4283b7194972cf19261b.js.map'
gzip /var/www/discourse/public/assets/application-bdcd81b3e87a4283b7194972cf19261b.js
Compressing: defer/html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js
uglifyjs '/var/www/discourse/public/assets/defer/_html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js' -p relative -c -m -o '/var/www/discourse/public/assets/defer/html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js' --source-map-root '/assets/defer' --source-map '/var/www/discourse/public/assets/defer/html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js.map' --source-map-url '/assets/defer/html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js.map'
gzip /var/www/discourse/public/assets/defer/html-sanitizer-bundle-d248c5e7fffd65438fab42fafa3d1d56.js
Compressing: discourse/controllers/application-8ec18ff701141e453a5a336f3a4b00f1.js
uglifyjs '/var/www/discourse/public/assets/discourse/controllers/_application-8ec18ff701141e453a5a336f3a4b00f1.js' -p relative -c -m -o '/var/www/discourse/public/assets/discourse/controllers/application-8ec18ff701141e453a5a336f3a4b00f1.js' --source-map-root '/assets/discourse/controllers' --source-map '/var/www/discourse/public/assets/discourse/controllers/application-8ec18ff701141e453a5a336f3a4b00f1.js.map' --source-map-url '/assets/discourse/controllers/application-8ec18ff701141e453a5a336f3a4b00f1.js.map'
gzip /var/www/discourse/public/assets/discourse/controllers/application-8ec18ff701141e453a5a336f3a4b00f1.js
Compressing: discourse/helpers/application-1229be3e4d538a88468d81cd890dda26.js
uglifyjs '/var/www/discourse/public/assets/discourse/helpers/_application-1229be3e4d538a88468d81cd890dda26.js' -p relative -c -m -o '/var/www/discourse/public/assets/discourse/helpers/application-1229be3e4d538a88468d81cd890dda26.js' --source-map-root '/assets/discourse/helpers' --source-map '/var/www/discourse/public/assets/discourse/helpers/application-1229be3e4d538a88468d81cd890dda26.js.map' --source-map-url '/assets/discourse/helpers/application-1229be3e4d538a88468d81cd890dda26.js.map'
gzip /var/www/discourse/public/assets/discourse/helpers/application-1229be3e4d538a88468d81cd890dda26.js
Compressing: discourse/routes/application-c1a9cbc48626949e7d1193b7bcec23c8.js
uglifyjs '/var/www/discourse/public/assets/discourse/routes/_application-c1a9cbc48626949e7d1193b7bcec23c8.js' -p relative -c -m -o '/var/www/discourse/public/assets/discourse/routes/application-c1a9cbc48626949e7d1193b7bcec23c8.js' --source-map-root '/assets/discourse/routes' --source-map '/var/www/discourse/public/assets/discourse/routes/application-c1a9cbc48626949e7d1193b7bcec23c8.js.map' --source-map-url '/assets/discourse/routes/application-c1a9cbc48626949e7d1193b7bcec23c8.js.map'
gzip /var/www/discourse/public/assets/discourse/routes/application-c1a9cbc48626949e7d1193b7bcec23c8.js
Compressing: discourse/templates/application-946a53f6833af9d1f41c98f65f8786e1.js
uglifyjs '/var/www/discourse/public/assets/discourse/templates/_application-946a53f6833af9d1f41c98f65f8786e1.js' -p relative -c -m -o '/var/www/discourse/public/assets/discourse/templates/application-946a53f6833af9d1f41c98f65f8786e1.js' --source-map-root '/assets/discourse/templates' --source-map '/var/www/discourse/public/assets/discourse/templates/application-946a53f6833af9d1f41c98f65f8786e1.js.map' --source-map-url '/assets/discourse/templates/application-946a53f6833af9d1f41c98f65f8786e1.js.map'
gzip /var/www/discourse/public/assets/discourse/templates/application-946a53f6833af9d1f41c98f65f8786e1.js
Compressing: discourse/views/application-4829ac46be9a412a82f2878a8d83586d.js
uglifyjs '/var/www/discourse/public/assets/discourse/views/_application-4829ac46be9a412a82f2878a8d83586d.js' -p relative -c -m -o '/var/www/discourse/public/assets/discourse/views/application-4829ac46be9a412a82f2878a8d83586d.js' --source-map-root '/assets/discourse/views' --source-map '/var/www/discourse/public/assets/discourse/views/application-4829ac46be9a412a82f2878a8d83586d.js.map' --source-map-url '/assets/discourse/views/application-4829ac46be9a412a82f2878a8d83586d.js.map'
gzip /var/www/discourse/public/assets/discourse/views/application-4829ac46be9a412a82f2878a8d83586d.js
Compressing: ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js
uglifyjs '/var/www/discourse/public/assets/_ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js' -p relative -c -m -o '/var/www/discourse/public/assets/ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js.map' --source-map-url '/assets/ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js.map'
gzip /var/www/discourse/public/assets/ember_jquery-3135835788b7c88a6baee2c4a176ffa8.js
Compressing: locales/ar-a9654bbfcbd71c53cedaab3e89d0e980.js
uglifyjs '/var/www/discourse/public/assets/locales/_ar-a9654bbfcbd71c53cedaab3e89d0e980.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/ar-a9654bbfcbd71c53cedaab3e89d0e980.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/ar-a9654bbfcbd71c53cedaab3e89d0e980.js.map' --source-map-url '/assets/locales/ar-a9654bbfcbd71c53cedaab3e89d0e980.js.map'
gzip /var/www/discourse/public/assets/locales/ar-a9654bbfcbd71c53cedaab3e89d0e980.js
Compressing: locales/bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js
uglifyjs '/var/www/discourse/public/assets/locales/_bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js.map' --source-map-url '/assets/locales/bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js.map'
gzip /var/www/discourse/public/assets/locales/bs_BA-154f2511cb8b3ad44d72924b5b32dba8.js
Compressing: locales/cs-c274b590dddaccb053ec4271ddc00e28.js
uglifyjs '/var/www/discourse/public/assets/locales/_cs-c274b590dddaccb053ec4271ddc00e28.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/cs-c274b590dddaccb053ec4271ddc00e28.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/cs-c274b590dddaccb053ec4271ddc00e28.js.map' --source-map-url '/assets/locales/cs-c274b590dddaccb053ec4271ddc00e28.js.map'
gzip /var/www/discourse/public/assets/locales/cs-c274b590dddaccb053ec4271ddc00e28.js
Compressing: locales/da-c049d373543c74851fc212f1682b86c1.js
uglifyjs '/var/www/discourse/public/assets/locales/_da-c049d373543c74851fc212f1682b86c1.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/da-c049d373543c74851fc212f1682b86c1.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/da-c049d373543c74851fc212f1682b86c1.js.map' --source-map-url '/assets/locales/da-c049d373543c74851fc212f1682b86c1.js.map'
gzip /var/www/discourse/public/assets/locales/da-c049d373543c74851fc212f1682b86c1.js
Compressing: locales/de-300a3cc178064534997c67c34653e5ba.js
uglifyjs '/var/www/discourse/public/assets/locales/_de-300a3cc178064534997c67c34653e5ba.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/de-300a3cc178064534997c67c34653e5ba.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/de-300a3cc178064534997c67c34653e5ba.js.map' --source-map-url '/assets/locales/de-300a3cc178064534997c67c34653e5ba.js.map'
gzip /var/www/discourse/public/assets/locales/de-300a3cc178064534997c67c34653e5ba.js
Compressing: locales/en-ac1ff84c2e9ad2d00f67a868405c10f4.js
uglifyjs '/var/www/discourse/public/assets/locales/_en-ac1ff84c2e9ad2d00f67a868405c10f4.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/en-ac1ff84c2e9ad2d00f67a868405c10f4.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/en-ac1ff84c2e9ad2d00f67a868405c10f4.js.map' --source-map-url '/assets/locales/en-ac1ff84c2e9ad2d00f67a868405c10f4.js.map'
gzip /var/www/discourse/public/assets/locales/en-ac1ff84c2e9ad2d00f67a868405c10f4.js
Compressing: locales/es-1605aa9ae3b56e941b5920947e5611d3.js
uglifyjs '/var/www/discourse/public/assets/locales/_es-1605aa9ae3b56e941b5920947e5611d3.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/es-1605aa9ae3b56e941b5920947e5611d3.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/es-1605aa9ae3b56e941b5920947e5611d3.js.map' --source-map-url '/assets/locales/es-1605aa9ae3b56e941b5920947e5611d3.js.map'
gzip /var/www/discourse/public/assets/locales/es-1605aa9ae3b56e941b5920947e5611d3.js
Compressing: locales/fa_IR-8b9ce601f08083a13168908bac9e0a1f.js
uglifyjs '/var/www/discourse/public/assets/locales/_fa_IR-8b9ce601f08083a13168908bac9e0a1f.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/fa_IR-8b9ce601f08083a13168908bac9e0a1f.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/fa_IR-8b9ce601f08083a13168908bac9e0a1f.js.map' --source-map-url '/assets/locales/fa_IR-8b9ce601f08083a13168908bac9e0a1f.js.map'
gzip /var/www/discourse/public/assets/locales/fa_IR-8b9ce601f08083a13168908bac9e0a1f.js
Compressing: locales/fi-a2faf9974186d98b3d2efcb71805f5ef.js
uglifyjs '/var/www/discourse/public/assets/locales/_fi-a2faf9974186d98b3d2efcb71805f5ef.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/fi-a2faf9974186d98b3d2efcb71805f5ef.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/fi-a2faf9974186d98b3d2efcb71805f5ef.js.map' --source-map-url '/assets/locales/fi-a2faf9974186d98b3d2efcb71805f5ef.js.map'
gzip /var/www/discourse/public/assets/locales/fi-a2faf9974186d98b3d2efcb71805f5ef.js
Compressing: locales/fr-40350bccb821cec6f56b06d2b56baf16.js
uglifyjs '/var/www/discourse/public/assets/locales/_fr-40350bccb821cec6f56b06d2b56baf16.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/fr-40350bccb821cec6f56b06d2b56baf16.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/fr-40350bccb821cec6f56b06d2b56baf16.js.map' --source-map-url '/assets/locales/fr-40350bccb821cec6f56b06d2b56baf16.js.map'
gzip /var/www/discourse/public/assets/locales/fr-40350bccb821cec6f56b06d2b56baf16.js
Compressing: locales/he-8daa45e617c9d196f0092e70e2ba7a4a.js
uglifyjs '/var/www/discourse/public/assets/locales/_he-8daa45e617c9d196f0092e70e2ba7a4a.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/he-8daa45e617c9d196f0092e70e2ba7a4a.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/he-8daa45e617c9d196f0092e70e2ba7a4a.js.map' --source-map-url '/assets/locales/he-8daa45e617c9d196f0092e70e2ba7a4a.js.map'
gzip /var/www/discourse/public/assets/locales/he-8daa45e617c9d196f0092e70e2ba7a4a.js
Compressing: locales/id-48a64233331c145a2fd7b1f61614dd5a.js
uglifyjs '/var/www/discourse/public/assets/locales/_id-48a64233331c145a2fd7b1f61614dd5a.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/id-48a64233331c145a2fd7b1f61614dd5a.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/id-48a64233331c145a2fd7b1f61614dd5a.js.map' --source-map-url '/assets/locales/id-48a64233331c145a2fd7b1f61614dd5a.js.map'
gzip /var/www/discourse/public/assets/locales/id-48a64233331c145a2fd7b1f61614dd5a.js
Compressing: locales/it-095171ae751fd41e261f9133f8ef5cbe.js
uglifyjs '/var/www/discourse/public/assets/locales/_it-095171ae751fd41e261f9133f8ef5cbe.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/it-095171ae751fd41e261f9133f8ef5cbe.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/it-095171ae751fd41e261f9133f8ef5cbe.js.map' --source-map-url '/assets/locales/it-095171ae751fd41e261f9133f8ef5cbe.js.map'
gzip /var/www/discourse/public/assets/locales/it-095171ae751fd41e261f9133f8ef5cbe.js
Compressing: locales/ja-13d9197ac65d0f57f94e5afaf18bd8e0.js
uglifyjs '/var/www/discourse/public/assets/locales/_ja-13d9197ac65d0f57f94e5afaf18bd8e0.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/ja-13d9197ac65d0f57f94e5afaf18bd8e0.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/ja-13d9197ac65d0f57f94e5afaf18bd8e0.js.map' --source-map-url '/assets/locales/ja-13d9197ac65d0f57f94e5afaf18bd8e0.js.map'
gzip /var/www/discourse/public/assets/locales/ja-13d9197ac65d0f57f94e5afaf18bd8e0.js
Compressing: locales/ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js
uglifyjs '/var/www/discourse/public/assets/locales/_ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js.map' --source-map-url '/assets/locales/ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js.map'
gzip /var/www/discourse/public/assets/locales/ko-c3f8ac2d9b7cd427bbfc179bcb9e0e22.js
Compressing: locales/nb_NO-099cad0690efe15fe3fb5f0bef12f653.js
uglifyjs '/var/www/discourse/public/assets/locales/_nb_NO-099cad0690efe15fe3fb5f0bef12f653.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/nb_NO-099cad0690efe15fe3fb5f0bef12f653.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/nb_NO-099cad0690efe15fe3fb5f0bef12f653.js.map' --source-map-url '/assets/locales/nb_NO-099cad0690efe15fe3fb5f0bef12f653.js.map'
gzip /var/www/discourse/public/assets/locales/nb_NO-099cad0690efe15fe3fb5f0bef12f653.js
Compressing: locales/nl-b8c8bde21afca02a773eaa745ce413fd.js
uglifyjs '/var/www/discourse/public/assets/locales/_nl-b8c8bde21afca02a773eaa745ce413fd.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/nl-b8c8bde21afca02a773eaa745ce413fd.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/nl-b8c8bde21afca02a773eaa745ce413fd.js.map' --source-map-url '/assets/locales/nl-b8c8bde21afca02a773eaa745ce413fd.js.map'
gzip /var/www/discourse/public/assets/locales/nl-b8c8bde21afca02a773eaa745ce413fd.js
Compressing: locales/pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js
uglifyjs '/var/www/discourse/public/assets/locales/_pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js.map' --source-map-url '/assets/locales/pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js.map'
gzip /var/www/discourse/public/assets/locales/pl_PL-9c5e0208b9b84cab5258a279fc6232a4.js
Compressing: locales/pt-8bbcbed608e0a5e8dc4163a122800a44.js
uglifyjs '/var/www/discourse/public/assets/locales/_pt-8bbcbed608e0a5e8dc4163a122800a44.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/pt-8bbcbed608e0a5e8dc4163a122800a44.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/pt-8bbcbed608e0a5e8dc4163a122800a44.js.map' --source-map-url '/assets/locales/pt-8bbcbed608e0a5e8dc4163a122800a44.js.map'
gzip /var/www/discourse/public/assets/locales/pt-8bbcbed608e0a5e8dc4163a122800a44.js
Compressing: locales/pt_BR-4bb53980cf16ae7813f8bab6982c026d.js
uglifyjs '/var/www/discourse/public/assets/locales/_pt_BR-4bb53980cf16ae7813f8bab6982c026d.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/pt_BR-4bb53980cf16ae7813f8bab6982c026d.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/pt_BR-4bb53980cf16ae7813f8bab6982c026d.js.map' --source-map-url '/assets/locales/pt_BR-4bb53980cf16ae7813f8bab6982c026d.js.map'
gzip /var/www/discourse/public/assets/locales/pt_BR-4bb53980cf16ae7813f8bab6982c026d.js
Compressing: locales/ro-4ecf8f14ab5854eae29268a3f107a17c.js
uglifyjs '/var/www/discourse/public/assets/locales/_ro-4ecf8f14ab5854eae29268a3f107a17c.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/ro-4ecf8f14ab5854eae29268a3f107a17c.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/ro-4ecf8f14ab5854eae29268a3f107a17c.js.map' --source-map-url '/assets/locales/ro-4ecf8f14ab5854eae29268a3f107a17c.js.map'
gzip /var/www/discourse/public/assets/locales/ro-4ecf8f14ab5854eae29268a3f107a17c.js
Compressing: locales/ru-f73cff82522c3f1ac517940757ac5318.js
uglifyjs '/var/www/discourse/public/assets/locales/_ru-f73cff82522c3f1ac517940757ac5318.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/ru-f73cff82522c3f1ac517940757ac5318.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/ru-f73cff82522c3f1ac517940757ac5318.js.map' --source-map-url '/assets/locales/ru-f73cff82522c3f1ac517940757ac5318.js.map'
gzip /var/www/discourse/public/assets/locales/ru-f73cff82522c3f1ac517940757ac5318.js
Compressing: locales/sk-4bacbc32eb451021d8c07451ac76aacd.js
uglifyjs '/var/www/discourse/public/assets/locales/_sk-4bacbc32eb451021d8c07451ac76aacd.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/sk-4bacbc32eb451021d8c07451ac76aacd.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/sk-4bacbc32eb451021d8c07451ac76aacd.js.map' --source-map-url '/assets/locales/sk-4bacbc32eb451021d8c07451ac76aacd.js.map'
gzip /var/www/discourse/public/assets/locales/sk-4bacbc32eb451021d8c07451ac76aacd.js
Compressing: locales/sq-30aa42d53fe04263db874b46d2e5b9ce.js
uglifyjs '/var/www/discourse/public/assets/locales/_sq-30aa42d53fe04263db874b46d2e5b9ce.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/sq-30aa42d53fe04263db874b46d2e5b9ce.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/sq-30aa42d53fe04263db874b46d2e5b9ce.js.map' --source-map-url '/assets/locales/sq-30aa42d53fe04263db874b46d2e5b9ce.js.map'
gzip /var/www/discourse/public/assets/locales/sq-30aa42d53fe04263db874b46d2e5b9ce.js
Compressing: locales/sv-b679adcc6d3e01f763dc0bb89d924d31.js
uglifyjs '/var/www/discourse/public/assets/locales/_sv-b679adcc6d3e01f763dc0bb89d924d31.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/sv-b679adcc6d3e01f763dc0bb89d924d31.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/sv-b679adcc6d3e01f763dc0bb89d924d31.js.map' --source-map-url '/assets/locales/sv-b679adcc6d3e01f763dc0bb89d924d31.js.map'
gzip /var/www/discourse/public/assets/locales/sv-b679adcc6d3e01f763dc0bb89d924d31.js
Compressing: locales/te-d90ba364c584553995dcd42a266052d1.js
uglifyjs '/var/www/discourse/public/assets/locales/_te-d90ba364c584553995dcd42a266052d1.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/te-d90ba364c584553995dcd42a266052d1.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/te-d90ba364c584553995dcd42a266052d1.js.map' --source-map-url '/assets/locales/te-d90ba364c584553995dcd42a266052d1.js.map'
gzip /var/www/discourse/public/assets/locales/te-d90ba364c584553995dcd42a266052d1.js
Compressing: locales/tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js
uglifyjs '/var/www/discourse/public/assets/locales/_tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js.map' --source-map-url '/assets/locales/tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js.map'
gzip /var/www/discourse/public/assets/locales/tr_TR-bce9601b62fb5f87f9fb501a0c51dd66.js
Compressing: locales/uk-dff04a25279059a7e4b9573965d1dd1d.js
uglifyjs '/var/www/discourse/public/assets/locales/_uk-dff04a25279059a7e4b9573965d1dd1d.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/uk-dff04a25279059a7e4b9573965d1dd1d.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/uk-dff04a25279059a7e4b9573965d1dd1d.js.map' --source-map-url '/assets/locales/uk-dff04a25279059a7e4b9573965d1dd1d.js.map'
gzip /var/www/discourse/public/assets/locales/uk-dff04a25279059a7e4b9573965d1dd1d.js
Compressing: locales/zh_CN-dfa074ae965ceb102a5308e651591fef.js
uglifyjs '/var/www/discourse/public/assets/locales/_zh_CN-dfa074ae965ceb102a5308e651591fef.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/zh_CN-dfa074ae965ceb102a5308e651591fef.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/zh_CN-dfa074ae965ceb102a5308e651591fef.js.map' --source-map-url '/assets/locales/zh_CN-dfa074ae965ceb102a5308e651591fef.js.map'
gzip /var/www/discourse/public/assets/locales/zh_CN-dfa074ae965ceb102a5308e651591fef.js
Compressing: locales/zh_TW-61a9af1f2d908c8becfae75be768997c.js
uglifyjs '/var/www/discourse/public/assets/locales/_zh_TW-61a9af1f2d908c8becfae75be768997c.js' -p relative -c -m -o '/var/www/discourse/public/assets/locales/zh_TW-61a9af1f2d908c8becfae75be768997c.js' --source-map-root '/assets/locales' --source-map '/var/www/discourse/public/assets/locales/zh_TW-61a9af1f2d908c8becfae75be768997c.js.map' --source-map-url '/assets/locales/zh_TW-61a9af1f2d908c8becfae75be768997c.js.map'
gzip /var/www/discourse/public/assets/locales/zh_TW-61a9af1f2d908c8becfae75be768997c.js
Compressing: preload_store-d16a3675434b5a0043157cfc2b850471.js
uglifyjs '/var/www/discourse/public/assets/_preload_store-d16a3675434b5a0043157cfc2b850471.js' -p relative -c -m -o '/var/www/discourse/public/assets/preload_store-d16a3675434b5a0043157cfc2b850471.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/preload_store-d16a3675434b5a0043157cfc2b850471.js.map' --source-map-url '/assets/preload_store-d16a3675434b5a0043157cfc2b850471.js.map'
gzip /var/www/discourse/public/assets/preload_store-d16a3675434b5a0043157cfc2b850471.js
Compressing: vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js
uglifyjs '/var/www/discourse/public/assets/_vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js' -p relative -c -m -o '/var/www/discourse/public/assets/vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js.map' --source-map-url '/assets/vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js.map'
gzip /var/www/discourse/public/assets/vendor-b446ddf94c0fbadd8f0c95717a0ead0e.js
Compressing: break_string-acd906f9185938240ab8b1b796f21d89.js
uglifyjs '/var/www/discourse/public/assets/_break_string-acd906f9185938240ab8b1b796f21d89.js' -p relative -c -m -o '/var/www/discourse/public/assets/break_string-acd906f9185938240ab8b1b796f21d89.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/break_string-acd906f9185938240ab8b1b796f21d89.js.map' --source-map-url '/assets/break_string-acd906f9185938240ab8b1b796f21d89.js.map'
gzip /var/www/discourse/public/assets/break_string-acd906f9185938240ab8b1b796f21d89.js
Compressing: browser-update-1b088c371e098d02d2b87570660d5d68.js
uglifyjs '/var/www/discourse/public/assets/_browser-update-1b088c371e098d02d2b87570660d5d68.js' -p relative -c -m -o '/var/www/discourse/public/assets/browser-update-1b088c371e098d02d2b87570660d5d68.js' --source-map-root '/assets' --source-map '/var/www/discourse/public/assets/browser-update-1b088c371e098d02d2b87570660d5d68.js.map' --source-map-url '/assets/browser-update-1b088c371e098d02d2b87570660d5d68.js.map'
gzip /var/www/discourse/public/assets/browser-update-1b088c371e098d02d2b87570660d5d68.js
Compressing: docker-manager-app-fc45ae9f5dc46a536ad03487a4ce173f.js
gzip /var/www/discourse/public/assets/docker-manager-app-fc45ae9f5dc46a536ad03487a4ce173f.js
Compressing: docker-manager-vendor-e62406a2f5676e280b40622751069e76.js
gzip /var/www/discourse/public/assets/docker-manager-vendor-e62406a2f5676e280b40622751069e76.js
I, [2016-01-31T22:36:54.947897 #38] INFO -- : Purging temp files
Bundling assets
Compressing Javascript and Generating Source Maps
I, [2016-01-31T22:36:54.980982 #38] INFO -- : File > /usr/local/bin/discourse chmod: +x
I, [2016-01-31T22:36:54.985765 #38] INFO -- : File > /usr/local/bin/rails chmod: +x
I, [2016-01-31T22:36:54.991462 #38] INFO -- : File > /usr/local/bin/rake chmod: +x
I, [2016-01-31T22:36:55.000664 #38] INFO -- : File > /etc/update-motd.d/10-web chmod: +x
I, [2016-01-31T22:36:55.004956 #38] INFO -- : File > /etc/logrotate.d/rails chmod:
I, [2016-01-31T22:36:55.008939 #38] INFO -- : File > /etc/logrotate.d/nginx chmod:
I, [2016-01-31T22:36:55.014268 #38] INFO -- : File > /etc/runit/1.d/00-ensure-links chmod: +x
I, [2016-01-31T22:36:55.017440 #38] INFO -- : Replacing session required pam_loginuid.so with in /etc/pam.d/sshd
I, [2016-01-31T22:36:55.025622 #38] INFO -- : File > /etc/service/sshd/run chmod: +x
I, [2016-01-31T22:36:55.029838 #38] INFO -- : File > /etc/runit/3.d/99-ssh chmod: +x
I, [2016-01-31T22:36:55.039974 #38] INFO -- : > mkdir -p /var/run/sshd
I, [2016-01-31T22:36:55.042621 #38] INFO -- :
I, [2016-01-31T22:36:55.042900 #38] INFO -- : > mkdir -p /root/.ssh
I, [2016-01-31T22:36:55.048344 #38] INFO -- :
I, [2016-01-31T22:36:55.048609 #38] INFO -- : > echo "" >> /root/.ssh/authorized_keys
I, [2016-01-31T22:36:55.049996 #38] INFO -- :
I, [2016-01-31T22:36:55.050172 #38] INFO -- : > echo "" >> /root/.ssh/authorized_keys
I, [2016-01-31T22:36:55.051516 #38] INFO -- :
I, [2016-01-31T22:36:55.051682 #38] INFO -- : > chmod 640 /root/.ssh/authorized_keys
I, [2016-01-31T22:36:55.057421 #38] INFO -- :
I, [2016-01-31T22:36:55.057588 #38] INFO -- : > rm /etc/update-motd.d/00-header
I, [2016-01-31T22:36:55.060473 #38] INFO -- :
I, [2016-01-31T22:36:55.060655 #38] INFO -- : > rm /etc/update-motd.d/10-help-text
I, [2016-01-31T22:36:55.062548 #38] INFO -- :
I, [2016-01-31T22:36:55.062719 #38] INFO -- : > rm /etc/legal
I, [2016-01-31T22:36:55.064106 #38] INFO -- :
I, [2016-01-31T22:36:55.067612 #38] INFO -- : File > /etc/update-motd.d/00-discourse chmod: +x
I, [2016-01-31T22:36:55.074002 #38] INFO -- : Replacing (?-mix:server.+{) with limit_req_zone $binary_remote_addr zone=flood:10m rate=$reqs_per_secondr/s;
limit_req_zone $binary_remote_addr zone=bot:10m rate=$reqs_per_minuter/m;
limit_req_status 429;
server {
in /etc/nginx/conf.d/discourse.conf
I, [2016-01-31T22:36:55.076397 #38] INFO -- : Replacing (?-mix:location @discourse {) with location @discourse {
limit_req zone=flood burst=$burst_per_second nodelay;
limit_req zone=bot burst=$burst_per_minute nodelay; in /etc/nginx/conf.d/discourse.conf
I, [2016-01-31T22:36:55.078815 #38] INFO -- : > echo "Beginning of custom commands"
I, [2016-01-31T22:36:55.080156 #38] INFO -- : Beginning of custom commands
I, [2016-01-31T22:36:55.081053 #38] INFO -- : > echo "End of custom commands"
I, [2016-01-31T22:36:55.082420 #38] INFO -- : End of custom commands
I, [2016-01-31T22:36:55.082950 #38] INFO -- : > awk -F\# '{print $1;}' ~/.ssh/authorized_keys | awk 'BEGIN { print "Authorized SSH keys for this container:"; } NF>=2 {print $NF;}'
I, [2016-01-31T22:36:55.095095 #38] INFO -- : Authorized SSH keys for this container:
I, [2016-01-31T22:36:55.097359 #38] INFO -- : Terminating async processes
I, [2016-01-31T22:36:55.098012 #38] INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/9.3/bin/postmaster -D /etc/postgresql/9.3/main pid: 108
I, [2016-01-31T22:36:55.100056 #38] INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 236
2016-01-31 22:36:55 UTC [108-2] LOG: received fast shutdown request
2016-01-31 22:36:55 UTC [108-3] LOG: aborting any active transactions
2016-01-31 22:36:55 UTC [115-2] LOG: autovacuum launcher shutting down
236:signal-handler (1454279815) Received SIGTERM scheduling shutdown...
2016-01-31 22:36:55 UTC [112-1] LOG: shutting down
236:M 31 Jan 22:36:55.157 # User requested shutdown...
236:M 31 Jan 22:36:55.158 * Saving the final RDB snapshot before exiting.
236:M 31 Jan 22:36:55.168 * DB saved on disk
236:M 31 Jan 22:36:55.168 # Redis is now ready to exit, bye bye...
2016-01-31 22:36:55 UTC [112-2] LOG: database system is shut down
c3ea789e7babd5441cadc1bdeb51b16a0cd385522d4f8e2f80089a6ef2a3152b
10f49bca820c7515689785ef1d1ffd64d7e9def8c4ae70646a9f7190e3e5691c
Removing old container
+ /usr/bin/docker rm app
app
+ /usr/bin/docker run -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=2 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_MALLOC_LIMIT=40000000 -e RUBY_HEAP_MIN_SLOTS=800000 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e HOME=/root -e DISCOURSE_DEVELOPER_EMAILS=doug@plusminus.con.com -e DISCOURSE_HOSTNAME=forum.plusminusrec.com -e DISCOURSE_SMTP_ADDRESS=email-smtp.us-east-1.amazonaws.com -e DISCOURSE_SMTP_USER_NAME=XXXXXXXXXXXXXX -e DISCOURSE_SMTP_PASSWORD=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY -h sonicyouth.plusminusrec.com-app -e DOCKER_HOST_IP=172.17.42.1 --name app -t -p 8000:80 -p 2222:22 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log local_discourse/app /sbin/boot
7cab40ce1edf655829bac062306add5d4fec76f369a7b34d44b1609310b3bf34
ubuntu@sonicyouth:/var/discourse$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment