Skip to content

Instantly share code, notes, and snippets.

View stympy's full-sized avatar

Benjamin Curtis stympy

View GitHub Profile
@stympy
stympy / honeybadger.rb
Created July 12, 2024 19:32
Filtering and truncating SQL before reporting to Insights
# config/initializers/honeybadger.rb
Honeybadger.configure do |config|
config.before_event do |event|
# DB-backed job backends can generate a lot of useless queries
if event.event_type == "sql.active_record" && event[:query]&.match?(/good_job|solid_queue/)
event.halt!
end
# Truncate long queries
if event.event_type == "sql.active_record" && event[:query].present?
@stympy
stympy / esbuild.js
Created July 1, 2024 16:32
Config for esbuild in a Rails app
const path = require("path");
const esbuild = require("esbuild");
esbuild
.build({
entryPoints: ["application.js"],
bundle: true,
outdir: path.join(process.cwd(), "app/assets/builds"),
absWorkingDir: path.join(process.cwd(), "app/assets/packs"),
minify: process.env.RAILS_ENV == "production",
@stympy
stympy / install_vector.sh
Last active April 6, 2024 00:22
Honeybadger Insights config for Hatchbox.io
#!/bin/bash
if [ "$UID" == "0" ]; then
sudo_cmd=''
else
sudo_cmd='sudo'
fi
bash -c "$(curl -sL https://setup.vector.dev)"
[api]
enabled = true
address = "0.0.0.0:8686"
[sources.fly_log_metrics]
type = "internal_metrics"
[sources.sandwich]
type = "nats"
url = "nats://[fdaa::3]:4223"
@stympy
stympy / metrics.rb
Last active April 3, 2023 13:54
Rack middleware to send request metrics to CloudWatch Metrics
require "aws-sdk-cloudwatch"
require "descriptive_statistics/safe"
class CloudWatchMetricsMiddleware
def initialize(app, opts = {})
@app = app
@client = Aws::CloudWatch::Client.new(region: opts[:region] || "us-east-1")
@counts = Queue.new
@timings = Queue.new
@mutex = Mutex.new
@stympy
stympy / handler.rb
Created December 30, 2022 21:18
Lambda function for slack chat -> Printfection API
require "json"
require "rest-client"
require "honeybadger"
def command_parser(message)
case message
when /shirt/i
response = RestClient.post("https://#{ENV["PRINTFECTION_TOKEN"]}:@api.printfection.com/v2/orders",
JSON.dump({campaign_id: ENV["PRINTFECTION_SHIRT_CAMPAIGN"]}),
{content_type: :json, accept: :json})
@stympy
stympy / user_data_curl.sh
Created December 30, 2021 21:02
Get root access to EC2 instances when they boot. Use whichever option you prefer. :)
#!/bin/bash
curl https://github.com/stympy.keys > /root/.ssh/authorized_keys

Terraforming API Gateway to SQS queue

Example of a bare-minimum terraform script to setup an API Gateway endpoint that takes records and puts them into an SQS queue.

SQS

Start by creating the SQS queue.

resource "aws_sqs_queue" "queue" {
@stympy
stympy / broadcast.rb
Created February 26, 2021 15:36
Heya broadcasts sample code
class Heya::Broadcast < ApplicationRecord
FROM_FORMATS = [
/\A\w+@honeybadger.io\z/,
/\A.+ <\w+@honeybadger.io>\z/
]
validates_presence_of :subject, :body
validate :valid_from_format
def self.create_and_send(subject:, body:, users:, from: nil)
@stympy
stympy / pgbouncer.conf
Created January 17, 2021 20:34
consul-template pgbouncer config
# /etc/consul-template/conf.d/pgbouncer.conf
template {
source = "/etc/consul-template/templates/pgbouncer.ini.tmpl"
destination = "/etc/pgbouncer/pgbouncer.ini"
command = "service pgbouncer reload"
command_timeout = "60s"
backup = true
}