Skip to content

Instantly share code, notes, and snippets.

View westonganger's full-sized avatar

Weston Ganger westonganger

View GitHub Profile
@westonganger
westonganger / TamperMonkey - Amazon orders page grand total script
Last active February 12, 2026 04:11
TamperMonkey - Amazon orders page grand total script
// ==UserScript==
// @name Amazon page total
// @namespace http://tampermonkey.net/
// @version 2026-02-12
// @description try to take over the world!
// @author You
// @match https://www.amazon.ca/your-orders/orders*
// @icon https://www.google.com/s2/favicons?sz=64&domain=amazon.ca
// @grant none
// ==/UserScript==
@westonganger
westonganger / simple_sortable_table.js
Last active January 10, 2025 03:27
simple_sortable_table.js
document.addEventListener("DOMContentLoaded", function(){
var current_sort_by = null;
var sort_ascending = true;
var sort_table = function(table_el){
var tbody_el = table_el.querySelector("tbody");
var sort_col_index = table_el.querySelectorAll("th").findIndex(function(el){ return el.textContent === current_sort_by });
var sorted_row_elements = tbody_el.querySelectorAll("tr").sort(function(prev_tr_el, next_tr_el){
@westonganger
westonganger / Converting Postgresql SQL files to SQLite.md
Last active October 24, 2023 21:05
Converting Postgresql SQL files to SQLite

Step 1: Dump your postgresql create_table statements to a file:

pg_dump -s my_db_name > my_db_name_create.sql
  • You will need to manually remove all statements except CREATE TABLE, CREATE INDEX, CREATE_UNIQUE INDEX, etc.
    • Honestly just do it. It wont take too long, you'll be fine.
    • Some statements you will definately need to remove are SET, ALTER, CREATE SEQUENCE
  • For INDEX statements we need to find-and-remove USING btree
@westonganger
westonganger / Rails fields_for and nested attributes: How to add or remove without cocoon gem
Last active May 26, 2023 20:24
Rails fields_for and nested attributes: How to add or remove without cocoon gem
<%= form_for @post do |f| %>
<div class="comments-wrapper">
<% f.fields_for :comments do |f2| %>
<%= render "comment_fields", f: f2 %>
<% end %>
</div>
<button type="button" class="add-comment">Add Comment</button>
<script>
### BUNDLER
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
ruby '2.4.1'
gem "rails"
gem "sqlite3"
#gem 'responders'
def self.with_fresh_i18n_load_paths(load_paths, &block)
prev_load_path = I18n.load_path
I18n.load_path = load_paths
I18n.backend.reload!
block.call
ensure
I18n.load_path = prev_load_path
I18n.backend.reload!
# lib/<project_name>/engine.rb
module RailsI18nManager
class Engine < ::Rails::Engine
isolate_namespace RailsI18nManager
initializer "rails_i18n_manager.load_static_assets" do |app|
### Expose static assets
app.middleware.use ::ActionDispatch::Static, "#{root}/public"
end
# lib/<project_name>/engine.rb
module RailsI18nManager
class Engine < ::Rails::Engine
isolate_namespace RailsI18nManager
### Automatically load all migrations into main rails app
initializer "rails_i18n_manager.append_migrations" do |app|
if !app.root.to_s.match?(root.to_s)
config.paths["db/migrate"].expanded.each do |expanded_path|
### Article about the BOM: https://estl.tech/of-ruby-and-hidden-csv-characters-ef482c679b35
### Article about other CSV gotchas: https://blog.rubyhero.dev/solving-problems-with-csv-parsing
### Remove Blank Rows from end of file
### Ideally this would be handled by the controller to sanitize before saving upload however I wasnt able to make that work
file_data = file.read.sub(/[,\n\r\t ]*\z/, "")
i = -1
@westonganger
westonganger / Naive ERB to Slim Converter - convert_slim_to_erb
Last active March 29, 2023 02:05
Naive ERB to Slim Converter (because slimrb does a really terrible job converting)
#!/usr/bin/env ruby
### USAGE: `./convert_slim_to_erb path/to/views/`
### LIMITATIONS:
### - Does not add closing tags such as `<% end %>` or `</div>`
SELF_CLOSING_TAGS = ["input","br","hr","img","meta","area","base","col","embed","link","source","track","wbr","param"].freeze
@line = nil