How to silence PostgreSQL in Rails
Luckily, there are a few simple steps to make PostgreSQL a bit more bearable to work with.
Notices when running tests
The most obvious noise from PostgreSQL is when running your tests. For a large’ish application a simple
rake will cause pages of
NOTICE: CREATE TABLE will create implicit sequence "inboxes_id_seq" for serial column "inboxes.id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "inboxes_pkey" for table "inboxes"
to be output.
To get rid of those, simply add
ActiveRecord attribute queries
The first time Rails (well, ActiveRecord) loads a model it fetches the columns/attributes from the table. This is fine, but it can leave a lot of pointless and quite verbose output in your log files:
Inbox Load (3.7ms) SELECT "inboxes".* FROM "inboxes" ORDER BY created_at LIMIT 1 SQL (0.9ms) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"inboxes"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum
Getting rid of those is as simple as installing the silent-postgres gem, which
“Silences internal diagnostic messages from postgresql connection adapter.”
Ah, silence is golden…