Skip to content

Instantly share code, notes, and snippets.

View andynu's full-sized avatar

Andrew Nutter-Upham andynu

View GitHub Profile
@andynu
andynu / git-stat-all
Created January 28, 2022 17:50
git-stat-all command, lists an overall status of all the git repositories under the current directory.
#!/usr/bin/env ruby
require 'active_support/all'
require 'pp'
require 'rainbow'
require 'terminal-table'
$show_all = ARGV.include? '--all'
$undeployed = ARGV.include? '--undeployed'
@andynu
andynu / example.sh
Last active January 19, 2023 16:40
rails-upgrade script, a helper for moving pins and doing other checks during ruby upgrades
# I have lots of projects. As I do the rails upgrades I collect the pin changes and other adjustments here
# towards the end of upgrading all the projects it gets easier and easier because of these commands.
❯ ./rails-upgrade
Commands:
rails-upgrade apple_touch # add blank apple-touch icons
rails-upgrade application_record # adds ApplicationRecord and replaces all references to ActiveRecord::Base with it
rails-upgrade asset_precompile_check # look for assets that need to be added to the assets initializer precompile list
rails-upgrade assigns_check # the assigns method has been extracted to a gem, check if it is used, and add the gem
rails-upgrade before_filter # change before_filter to before_action in controllers
@andynu
andynu / rfluff.rb
Created May 18, 2022 12:53
rfluff a way to list TODOS|XXX|HACK|etc /w optional vim quickfix formatting.
#!/usr/bin/ruby
#
# gather a few statistics and find all flagged comments
#
# Usage:
# rfluff [-qf] [tag] [tag] ...
#
# -qf outputs a vim compatible quickfix format, otherwise
# the output is human readable
@andynu
andynu / routes_check.rake
Last active June 1, 2022 01:40
Parses production logs and checks which routes are used out of all the routes that are defined.
desc 'Show basic controller usage stats'
task :controllers => :environment do
logfiles = Dir['log/%s.log*' % Rails.env].sort
logs_gz, logs_txt = logfiles.partition{|f| Pathname.new(f).extname == '.gz' }
results = `ag Started -A 1 #{logs_txt.join(' ')}`
unless logs_gz.empty?
results << `zcat #{logs_gz.join(' ')} |ag Started -A 1`
end
Event = Struct.new(:http_method, :uri_path, :client_ip, :requested_at_str, :controller_name, :controller_action, :format) do
def requested_at
@andynu
andynu / init.vim
Created June 10, 2022 19:02
A neo-vim config.
" .config/nvim/init.vim
" Plugins
call plug#begin(stdpath('config') . '/plugins')
Plug 'neovim/nvim-lspconfig'
Plug 'stevearc/aerial.nvim'
Plug 'tpope/vim-rails'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-surround'
# Add this to your config/initializers/ folder.
if Kernel.const_defined?('ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter')
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_booleans = false
# Version 7.0.2 of activerecord-oracle_enhanced-adapter loads the types into
# a constant TYPE_MAP when the class is loaded
#
# This is so early in the process that there is no opertunity to change the
# default value of emulate_booleans, so that config is ineffective in that
#!/usr/bin/env ruby
require 'chronic'
require 'set'
if ARGV.empty?
ARGV.replace ['log/production.log']
end
# From facets gem
module Enumerable
@andynu
andynu / gem-bisect
Last active August 17, 2022 06:36
Find the last version that passes the tests by doing a binary search through a range of versions
#!/usr/bin/env ruby
#
# Find the last version that passes the tests by doing
# a binary search through a range of versions
#
# Usage: gem-bisect <gem_name> [<from_version> [<to_version>]]
#
# Example
# ❯ gem-bisect rack-attack 6.3 6.6.1
# Checking versions 6.6.1, 6.5.0, 6.4.0, 6.3.1
@andynu
andynu / show_method_history.rb
Created August 26, 2022 18:56
Given a ruby file and method name shows you all the different versions across the git history.
#!/usr/bin/env ruby
# Given a file and method_name
# Show all the different implementations across the git history (first commit per implementation).
#
# show_method_history <file> <method_name> --html
#
# e.g. show_method_history test/test_helper.rb sign_in --html
#
# WARNING: the --html output just dumps html files into your current folder.
#
@andynu
andynu / doc.rake
Created February 1, 2024 15:40
Run annotate and erd automatically when you db:migrate (rails)
namespace :doc do
desc 'generate yardoc docs in doc/app/index.html'
task :app do
`yard doc -o doc/app`
puts "see doc/app/index.html"
end
desc 'annotate models'
task :annotate do
run = ->(cmd){