Skip to content

Instantly share code, notes, and snippets.

@joshuap
joshuap / application_job.rb
Created March 19, 2019 16:15
Report ActiveJob exceptions to Honeybadger (default backend/unsupported backends)
# app/jobs/application_job.rb
class ApplicationJob < ActiveJob::Base
include HoneybadgerActiveJob
end
@joshuap
joshuap / redis.rb
Created November 30, 2018 01:31
Disable dangerous Redis commands in Ruby
# config/initializers/redis.rb
require 'redis'
# Disables the `flushdb` and `flushall` commands.
class Redis
module DangerousCommands
def flushdb
raise 'This is EXTREMELY DANGEROUS! If you really want to EMPTY THE ENTIRE DATABASE, do it from `redis-cli`.'
# You could call `super` here if you want to allow access in some circumstances.
end

Keybase proof

I hereby claim:

  • I am joshuap on github.
  • I am joshuawood (https://keybase.io/joshuawood) on keybase.
  • I have a public key whose fingerprint is D3BB F6B6 9348 B77E 21EC 8176 3B5A E18B 78E3 1A12

To claim this, I am signing this object:

@joshuap
joshuap / nginx.conf
Last active December 8, 2016 02:49
NGINX basic authentication w/ Honeybadger support
http {
# Increase the size of allowed values in map directive.
map_hash_bucket_size 128;
# Set the $auth_basic variable based on the value of the Honeybadger-Token header.
map $http_honeybadger_token $auth_basic {
default "Restricted Content";
"5245586210a715a83dfa8c6395226a19f7e46a6b647cc349b0479e92a4c43e42" "off";
}
@joshuap
joshuap / Gemfile
Last active April 20, 2016 15:54
RSpec expect_any_instance_of inheritance bug
source 'https://rubygems.org'
gem 'rspec', '3.4.0'
@joshuap
joshuap / assigned.json
Last active August 29, 2015 14:16
Example outage payloads for Honeybadger WebHooks
{"event":"assigned","message":"[Crywolf/production] RuntimeError assigned to Benjamin Curtis by Joshua Wood","actor":{"id":3,"email":"[email protected]","name":"Joshua Wood"},"fault":{"project_id":1717,"klass":"RuntimeError","component":"pages","action":"caused_exception","environment":"production","resolved":true,"ignored":false,"created_at":"2015-07-21T20:06:20.046Z","comments_count":4,"message":"This is the third cause raised at 2015-07-21 13:06:19 -0700","notices_count":1,"last_notice_at":"2015-07-21T20:06:20.000Z","tags":[],"id":14108233,"assignee":"[email protected]"},"assignee":{"id":1,"email":"[email protected]","name":"Benjamin Curtis"}}
@joshuap
joshuap / block_allocations.rb
Created March 6, 2015 20:00
Object allocations when calling block parameter vs. yielding implicitly.
require 'allocation_stats'
GROUP_BY = [:sourcefile, :sourceline, :class]
def block_without_param
yield
end
def block_with_param(&block)
block.call
@joshuap
joshuap / Gemfile
Last active August 29, 2015 14:05
CarrierWave
# File uploads
gem 'carrierwave'
# Image processing
gem 'mini_magick'
# S3 file storage
gem 'fog'
@joshuap
joshuap / .gitconfig
Created May 2, 2014 23:44
Josh's .gitconfig
[core]
excludesfile = ~/.gitignore
editor = mate -w
whitespace = trailing-space,space-before-tab
[apply]
whitespace = fix
[color]
ui = true ;doesnt work for some reason ...
@joshuap
joshuap / gist:11292337
Last active August 29, 2015 14:00
Google script to analyze SaaS cancellation emails and deliver a word cloud to the account owner. Install into https://script.google.com
// Requires the Word Cloud Lib extension to be installed prior to running:
// https://sites.google.com/site/scriptsexamples/custom-methods/other-libraries/word-cloud-library
function deliverCancellationThemes() {
var threads = GmailApp.search('subject:User Cancelled', 0, 100);
var messagesforCancellationThreads = GmailApp.getMessagesForThreads(threads);
var input = '';
for(i in messagesforCancellationThreads) {
for(j in messagesforCancellationThreads[i]) {
var body = messagesforCancellationThreads[i][j].getPlainBody();
Logger.log(body);