Skip to content

Instantly share code, notes, and snippets.

View bdurand's full-sized avatar

Brian Durand bdurand

  • San Francisco, CA
View GitHub Profile
@bdurand
bdurand / counter_cache_test.rb
Created October 13, 2012 17:45
Demonstrate counter_cache/destroy callback race condition
require 'rubygems'
require 'active_record'
ActiveRecord::Base.establish_connection("adapter" => "sqlite3", "database" => ":memory:")
class Widget < ActiveRecord::Base
connection.create_table table_name do |t|
t.string :name
t.integer :thing_count
end unless table_exists?
@bdurand
bdurand / row_lock_test_output.txt
Created October 18, 2012 17:10
ActiveRecord Row Lock Test Output
Current ActiveRecord code:
Selector Thread reports shared record exists
Thread 1 (0.8ms) BEGIN
Thread 1 running before_destroy callback
Thread 2 (0.6ms) BEGIN
Thread 2 running before_destroy callback
Selector Thread reports shared record exists
Thread 1 running before_destroy callback
Thread 2 running before_destroy callback
@bdurand
bdurand / git_cleanup_alias
Created September 6, 2018 20:51
Git Cleanup Alias
[alias]
cleanup = "!git branch --merged master | grep -v '\\*\\|master\\|develop\\|deploy\\|release\\|staging\\|sprint' | xargs -n 1 git branch -d"
#!/bin/sh
if [ "$2" == "" ]; then
>&2 echo "Usage: $0 backup|restore volume_name"
exit 1
fi
if [ "$1" == "backup" ]; then
docker run -it --rm -v $2:/volume -v `pwd`:/backup alpine tar -cjf /backup/$2.tar.bz2 -C /volume ./
elif [ "$1" == "restore" ]; then
@bdurand
bdurand / merge_branch
Last active October 5, 2018 17:52
Ruby script to manage merging and pushing branches.
#!/usr/bin/env ruby
# This script will handle refreshing your local git repository and merging in
# the latest changes from a remote branch on origin and then syncing the local
# branch back to origin (if applicable).
#
# This can be useful for such things as keeping your Pull Request branches in
# sync with the latest changes to master.
#
# Usage: `merge_branch [options] source [destination]
@bdurand
bdurand / benchmark_bundle.rb
Created May 10, 2012 16:15
Benchmark Your Bundle
#!/usr/bin/env ruby
require 'bundler'
require 'benchmark'
REGEXPS = [
/^no such file to load -- (.+)$/i,
/^Missing \w+ (?:file\s*)?([^\s]+.rb)$/i,
/^Missing API definition file in (.+)$/i,
/^cannot load such file -- (.+)$/i,
@bdurand
bdurand / pre_push_guard.sh
Last active January 9, 2020 21:31
Git pre-push hook to prevent you from accidentally pushing to important branches.
#!/bin/bash
# This script can be used as a git pre-push hook to guard against accidentally
# pushing to remote branches that may have special meaning and trigger other
# behavior. If you try to push to one of these branches, you will be prompted
# to confirm that is what you really meant to do.
set -o errexit
# set -o xtrace
#!/bin/bash
# Strip trailing whitespace from modified code files in git.
set -o errexit
# set -o xtrace
git diff --cached --name-only --diff-filter=ACM | egrep -e '\.(rb|js|css|scss|erb|html)$' | xargs sed -i '' -E 's/[[:space:]]+$//'
#!/bin/bash
# Run rubocop with automatic fixes on any new or modified git files
set -o errexit
# set -o xtrace
changed_files=`git diff --cached --name-only --diff-filter=ACM | grep -e '\.rb$' | cat`
if [ "$changed_files" != "" ]; then
ruby_version=`cat .ruby-version | tr -d '[:space:]'`
export EDITOR=/usr/bin/vi
eval "$(rbenv init -)"
export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export PROMPT='%(?.%F{green}√.%F{red}?%?)%f %B%F{240}%1~%f%b %# '
export BUNDLER_EDITOR=mate
ssh-add -A 2>/dev/null