Skip to content

Instantly share code, notes, and snippets.

{
"hello": "world"
}
# trust google cloud load balancer ips
# https://cloud.google.com/load-balancing/docs/https#x-forwarded-for_header
config.action_dispatch.trusted_proxies = %w(130.211.0.0/22 35.191.0.0/16).map { |proxy| IPAddr.new(proxy) }
<%
branch = `git rev-parse --abbrev-ref HEAD`.strip rescue ENV.fetch("RAILS_DATABASE_SUFFIX", "master")
branch = branch.underscore.gsub(/[\.\/\-]/, '_')
%>
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %>
host: <%= ENV.fetch("RAILS_DATABASE_HOST", "127.0.0.1") %>
@mattes
mattes / main.go
Created February 12, 2021 07:59
Quick HTTPS debug server
package main
import (
"fmt"
"log"
"net/http"
"net/http/httputil"
"os"
"golang.org/x/crypto/acme/autocert"
@mattes
mattes / script.sh
Created February 10, 2021 23:20
Allow non-root binary to bind port 80 and 443
sudo setcap CAP_NET_BIND_SERVICE=+eip /path/to/binary
@mattes
mattes / resque.rb
Created October 30, 2020 08:02
Resque in distroless docker container
# config/initializers/resque.rb
module Resque
class Worker
# Monkey patch linux_worker_pids because the original function tries to shell out.
# Since we run distroless in production, there is no shell.
# https://github.com/resque/resque/blob/7f6b88404dd18698f6f4023e18fdc1ae8318e5e5/lib/resque/worker.rb#L839
def linux_worker_pids
[Process.pid]
end
end
@mattes
mattes / rails-google-compute-deploy.md
Last active July 29, 2024 04:08
My own Heroku in 30 mins

Deploy Rails apps to Google Cloud Compute Engine

  • Zero Downtime
  • Graceful shutdowns
  • Via Github Actions
  • Zero infrastructure management overhead

Overview

The general idea is to have Github Actions test, build and deploy a Rails app to Google Cloud Compute Engine.

docker system prune -a
docker rm $(docker ps -a -f status=exited -q)
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes
@mattes
mattes / script.sh
Created September 10, 2020 23:21
Get access token via curl for default service account on Google Cloud Compute Engine
METADATA=http://metadata.google.internal/computeMetadata/v1
SVC_ACCT=$METADATA/instance/service-accounts/default
ACCESS_TOKEN=$(curl -H 'Metadata-Flavor: Google' $SVC_ACCT/token | cut -d'"' -f 4)