Skip to content

Instantly share code, notes, and snippets.

View sauloperez's full-sized avatar
🏔️

Pau Pérez Fabregat sauloperez

🏔️
View GitHub Profile
@sauloperez
sauloperez / dalyed_job_checks.rb
Created October 25, 2017 14:25
Snippets to check Delayed Job data
# Failed
Delayed::Job.where('failed_at IS NOT NULL')
# Active
Delayed::Job.where('failed_at IS NULL AND locked_by IS NOT NULL')
# Queued
Delayed::Job.where('failed_at IS NULL AND locked_by IS NULL')
# Destroy
@sauloperez
sauloperez / gist:c789684fbcdcabbccfca000e27b42293
Created December 27, 2018 10:28
Silence deprecation warnings in Rails
ActiveSupport::Deprecation.silenced = true
@sauloperez
sauloperez / enable_pg_stat_statements.sh
Created February 23, 2019 09:24
Enable pg_stat_statements
# At the bottom of add /etc/postgresql/9.5/main/postgresql.conf
shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = all
sudo systemctl restart postgresql
sudo su postgres
psql
CREATE extension pg_stat_statements;
@sauloperez
sauloperez / bundle_update_output.log
Created March 12, 2019 08:50
Bundle update output for Spree 2.1
Bundler could not find compatible versions for gem "actionpack":
In Gemfile:
rails (~> 4.0.0) was resolved to 4.0.0, which depends on
actionpack (= 4.0.0)
simple_form was resolved to 2.0.2, which depends on
actionpack (~> 3.0)
Bundler could not find compatible versions for gem "activerecord":
In Gemfile:
@sauloperez
sauloperez / Postgres_tips.txt
Created March 28, 2019 15:40
Postgres tips
\watch
SELECT datname, usename, query FROM pg_stat_activity; \watch
@sauloperez
sauloperez / sloq_query_log.txt
Created April 17, 2019 16:22
Slow query log
Like most databases, Postgres has a built-in slow query log feature that automatically logs queries to the main Postgres log file if they take over a certain amount of time and it's really easy to set up.
In your main postgresql.conf file (which is often somewhere like /etc/postgresql/9.6/main/postgresql.conf), either edit or add a line like so:
log_min_duration_statement = 1000
After restarting Postgres or reloading the config with SELECT pg_reload_conf();, this directive causes any queries that take over 1000 milliseconds (one second) to be logged.
(The location of the log file varies but is /var/log/postgresql/postgresql-9.6-main.log on my test setup, for instance.)
To deliberately run a long query for testing purposes:
@sauloperez
sauloperez / restart.txt
Created April 19, 2019 08:39
Detect when postgres needs a restart
On Wed, Oct 1, 2014 at 2:18 PM, Stuart Bishop <stuart(at)stuartbishop(dot)net>
wrote:
> It is unnecessary maintaining a list of parameters which require a
> restart, as you can tell by looking at pg_settings.
>
> The way I do it is by comparing the contents of pg_settings with a
> snapshot I made just after (or just before) the server was last
@sauloperez
sauloperez / order_management.sql
Created May 11, 2019 15:23
Order cycle management report in a single SQL query
select spree_line_items.order_id, spree_products.supplier_id, sum(spree_line_items.price * spree_line_items.quantity) AS amount
from spree_line_items
inner
join spree_variants
on spree_variants.id = spree_line_items.variant_id
inner
join spree_products
on spree_products.id = spree_variants.product_id
inner
join enterprises
NAME="ofn"
DISTRIBUTION="ubuntu"
RELEASE="xenial"
ARCH="amd64"
HOST="ofn.local"
DEVENV_USER="ofn-admin"
DEVENV_GROUP="openfoodnetwork"
PROJECT_NAME="openfoodnetwork"
@sauloperez
sauloperez / dump_with_compression.sh
Last active June 5, 2019 13:19
database dump with compression
pg_dump -U ofn_user -h localhost openfoodnetwork -Fc -f /tmp/production_dump.sql
# openfoodnetwork@production18:~/apps/openfoodnetwork/current$ du -h /tmp/production*
# 320M /tmp/production_dump_with_compression.sql
# 1.2G /tmp/production_dump_without_compression.sql