Skip to content

Instantly share code, notes, and snippets.

@floehopper
floehopper / inspect-retrying-jobs-in-sidekiq.rb
Created June 14, 2023 11:13
Inspect retrying jobs in Sidekiq
require 'sidekiq/monitor'
Sidekiq::RetrySet.new.each do |job|
p [job.display_class, job.display_args]
end
@floehopper
floehopper / format_aldermore_bank_csv_for_upload_to_freeagent.rb
Last active June 9, 2023 12:30
Format Aldermore Bank CSV for upload to FreeAgent
# See https://support.freeagent.com/hc/en-gb/articles/115001222564-How-to-format-a-CSV-file-to-upload-a-bank-statement#h_01FWZVYY1GEEGAPKJHG6FKV2HM
require 'csv'
CSV($stdin, headers: true, skip_blanks: true) do |csv|
csv.each do |row|
puts([
Date.parse(row['Date']).strftime("%d/%m/%Y"),
row['Amount'].gsub(/,/, ''),
row['Description'].gsub(/,/, '')
@floehopper
floehopper / Rollbar.svelte
Last active January 6, 2023 10:50
Rollbar configuration in a SvelteKit app - both client-side & server-side
<script>
/* eslint-disable */
import { mode } from "$app/env";
import { onMount } from "svelte";
const rollbarAccessToken = import.meta.env
.VITE_ROLLBAR_POST_CLIENT_ITEM_ACCESS_TOKEN;
const codeVersion = import.meta.env.VITE_LATEST_SHA;
@floehopper
floehopper / run-migration-from-rails-console.rb
Created September 6, 2022 19:55
Run migration from Rails console
migration_context = ActiveRecord::Base.connection.migration_context
migration_context.migrate(target_version = nil)
migration_context.rollback(steps = 1)
migration_context.forward(steps = 1)
migration_context.up(target_version = nil)
migration_context.down(target_version = nil)
migration_context.current_version
@floehopper
floehopper / validate-parameters-against-method-signature.rb
Created August 14, 2022 11:22
Validate parameters against method signature
def valid?(method, ...)
signature = method.inspect
pattern = %r{(?:\.|#)#{method.name}\(([^\)]*)\)}
params = signature.match(pattern)[1]
params_with_nil_default_values = params.gsub('...', 'nil')
klass = Class.new
klass.class_eval "def self.#{method.name}(#{params_with_nil_default_values})\nend\n"
klass.public_send(method.name, ...)
true
rescue ArgumentError => e
@floehopper
floehopper / display_changed_row_counts.rb
Created February 1, 2022 14:52
Display changed row counts using ActiveRecord
def row_counts
Hash[*ApplicationRecord.connection.execute(%{
ANALYZE;
SELECT
pgClass.relname AS tableName,
pgClass.reltuples AS rowCount
FROM
pg_class pgClass
INNER JOIN
pg_namespace pgNamespace ON (pgNamespace.oid = pgClass.relnamespace)
@floehopper
floehopper / flatten
Created December 27, 2021 11:26
Flatten files in sub-directories into single directory
#!/usr/bin/env ruby
require 'pathname'
require 'fileutils'
pwd = Pathname.pwd
begin
source = Pathname.new(ARGV[0].nil? ? pwd : ARGV[0]).realpath
destination = Pathname.new(ARGV[1].nil? ? pwd: ARGV[1]).realpath
@floehopper
floehopper / zx81-print-hi.bas
Created November 22, 2020 11:39
ZX81 machine code program to print "HI"
10 REM 000000000000
20 POKE 16514, 1
30 POKE 16515, 141
40 POKE 16516, 64
50 POKE 16517, 17
60 POKE 16518, 2
70 POKE 16519, 0
80 POKE 16520, 205
90 POKE 16521, 107
100 POKE 16522, 11
@floehopper
floehopper / ec2-iam-security-credentials.md
Last active November 7, 2020 15:09
Obtaining security credentials derived from IAM role on EC2 machine