Skip to content

Instantly share code, notes, and snippets.

View bradgessler's full-sized avatar

Brad Gessler bradgessler

View GitHub Profile
@bradgessler
bradgessler / test.rb
Last active February 23, 2025 22:28
REPL Tester
require 'pty'
require 'io/console'
require 'logger'
class REPL
attr_reader :stdout, :stdin, :logger
# Number of bytes to read at a time.
READ_CHUNK_SIZE = 512
# config/initializers/phlex_template_handler.rb
require "action_view"
require "phlex"
# Intercept unknown "capitalized" method calls (e.g., PageView(...)) in templates,
# look up a Phlex component class, instantiate it, and render it.
# Crucially, we re-bind the user’s block so that `self` is the component, not the ActionView context.
module PhlexDynamicMethodCalls
def method_missing(name, *args, **kwargs, &block)
# Only intercept method calls starting with an uppercase letter (e.g. "PageView", "MyComponent", etc.)
@bradgessler
bradgessler / links.rb
Last active January 11, 2025 16:56
Superview link helper
@bradgessler
bradgessler / componentizer.rb
Created December 21, 2024 08:44
Component initializers
class Component
attr_writer :post
def initialize(session:, fun: "bags", deeze:)
@session = session
@fun = fun # Make sure we assign this, otherwise @fun would be nil
@deeze = deeze
end
end
@bradgessler
bradgessler / fupg.sh
Last active January 2, 2025 17:43
When you don't have time to mess around worrying about why Postgres won't restart
#!/bin/bash
# Stop the PostgreSQL service
echo "Stopping PostgreSQL service..."
brew services stop postgresql || echo "PostgreSQL service not running."
# Uninstall PostgreSQL
echo "Uninstalling PostgreSQL..."
brew uninstall --force postgresql postgresql@14 postgresql@13 || echo "PostgreSQL not installed."
@bradgessler
bradgessler / bundle.rb
Created December 12, 2024 00:31
List locked gem specs
require "pathname"
require "bundler"
path = Pathname.new("/Users/bradgessler/Projects/terminalwire/traveling-ruby/shared/gemfiles/20241122")
definition = Bundler::Definition.build(path.join("Gemfile"), path.join("Gemfile.lock"), nil)
definition.locked_gems.specs.each do |spec|
p spec.name, spec.version
puts "gem install --platform=ruby #{spec.name} -v '#{spec.version}'"
end
@bradgessler
bradgessler / boolean_truther.rb
Last active December 11, 2024 03:18
Boolean Truther
# If you prefer TrueClass and FalseClass returns for predicate methods,
# you can `include Boolean::Truther` into your class to automatically generate
# ¿-prefixed methods that return true or false.
# Define a module to automatically generate the ¿-prefixed methods
module Boolean
module Truther
def self.included(base)
base.extend(ClassMethods)
end
@bradgessler
bradgessler / tool.rb
Created December 4, 2024 07:19
Fun with tools
class Fizz
def self.tool(method_name)
puts "defining methods in ruby return a symbol, like #{method_name.inspect}"
end
end
class Buzz < Fizz
tool def hello
puts "Hi!"
end
@bradgessler
bradgessler / gist:57c5df80d086edf38fa5cf6a58246113
Created November 2, 2024 06:52
Restart Postgres from a crashed Mac
# When macOS crashes and Postgres is running, it won't start if the `postmaster.pid` file is present.
# Careful. If you don't know what you're doing you can lose data.
# Use only on Postgres instances you don't care about or have done the work to look at the crashed data.
# Tail the logs
tail -f $(brew --prefix)/var/log/[email protected]
# Stop Postgres
brew stop postgres
@bradgessler
bradgessler / active_exchange.rb
Last active September 25, 2024 19:18
Terminalwire Rails Auth
module ActiveExchange
class Channel
def initialize(name:, server: ActiveExchange.server)
@server = server
@channel = name
@queue = Queue.new
@subscribe = false
end
def broadcast(message)