Skip to content

Instantly share code, notes, and snippets.

Avatar
💭
I may be slow to respond.

Pau Pérez Fabregat sauloperez

💭
I may be slow to respond.
View GitHub Profile
@sauloperez
sauloperez / restart.txt
Created Apr 19, 2019
Detect when postgres needs a restart
View restart.txt
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
View sloq_query_log.txt
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:
View Postgres_tips.txt
\watch
SELECT datname, usename, query FROM pg_stat_activity; \watch
@sauloperez
sauloperez / bundle_update_output.log
Created Mar 12, 2019
Bundle update output for Spree 2.1
View bundle_update_output.log
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:
View enable_pg_stat_statements.sh
# 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 / gist:c789684fbcdcabbccfca000e27b42293
Created Dec 27, 2018
Silence deprecation warnings in Rails
View gist:c789684fbcdcabbccfca000e27b42293
ActiveSupport::Deprecation.silenced = true
@sauloperez
sauloperez / gist:7026493
Created Oct 17, 2013
JavaScript WebSockets adapter
View gist:7026493
// WebSocket Adapter
// -------------------
// It forwards all WebSocket events to the application
// event aggregator (or event bus). The intention of
// this is to decouple the specific websockets implementation
// from the application's use of it.
var WSAdapter = function(options) {
if (options && !options.eventBus) {
@sauloperez
sauloperez / dalyed_job_checks.rb
Created Oct 25, 2017
Snippets to check Delayed Job data
View dalyed_job_checks.rb
# 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 / beat_the_refactoring_blerch
Created Apr 20, 2017
Beat the refactoring blerch
View beat_the_refactoring_blerch
Have you seen Matthew Inman's (The Oatmeal) comic about why he runs? It's
a classic. In it he talks about his inspiration for taking up long-distance
running. He imagines his tendency to slack off and sit on the couch as a little
creature he calls "The Blerch". It follows him around, tempting him to stop
moving and scarf down junk food.
I run too, though nothing close to the distances Inman runs. In my experience,
refactoring as a skill has a lot in common with running or any other athletic
sport. You can exercise your refactoring muscles, by deliberately working
through the steps with discipline, like we talked about in the last email. As
@sauloperez
sauloperez / toc.rb
Created Oct 21, 2016
Markdown TOC generator
View toc.rb
#!/usr/bin/env ruby
FILENAME = ARGV[0]
File.open(FILENAME, 'r') do |f|
f.each_line do |line|
forbidden_words = ['Table of contents', 'define', 'pragma']
next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ }
title = line.gsub("#", "").strip
You can’t perform that action at this time.