Skip to content

Instantly share code, notes, and snippets.

@sshaw
sshaw / print-non-existant-ignored-columns.rb
Last active July 29, 2023 17:15
Rails: Print What Models Have Ignored Columns That No Longer Exist in DB (Moved: https://github.com/sshaw/ignored_columns_tasks)
(ApplicationRecord.subclasses + ActiveRecord::Base.subclasses).each do |klass|
next if klass.abstract_class? || klass.ignored_columns.none?
ignored = klass.ignored_columns
klass.ignored_columns = []
klass.reset_column_information
removed = ignored - klass.column_names
klass.ignored_columns = ignored
next unless removed.any?
@sshaw
sshaw / skye-shaw-s-ruby-is-the-new-perl-guide-to-proc-and-lambda-s-and-some-random-shit.rb
Last active October 7, 2022 03:19
Skye Shaw's Ruby is the New Perl ™️ Guide to Procs and lambdas
# coding: utf-8
# Skye Shaw's Ruby is the New Perl ™️ Guide to Procs and lambda and Some Random Shit
lambda do
p 1
p 2
p 3
end[]
lambda {
@sshaw
sshaw / export-product-metafields.sh
Created January 5, 2022 03:57
Export the metafields of all products in your Shopify store to a JSONL file
#!/bin/bash
#
# Export the metafields for products in your Shopify store to a JSONL file.
# Can be modified to output to a file per product or to text file(s).
# See Shopify Development Tools (sdt) for more infomation.
#
# By ScreenStaring (http://screenstaring.com)
#
#
@sshaw
sshaw / rle.txt
Last active April 5, 2019 12:01
Run-length encoding in Perl. Does not support integers :)
perl -E'print $+[1]-$l,$& and $l=$+[1] while $ARGV[0] =~ /(.)(?!\1)/g' aaabbbcdeee
3a3b1c1d3e
perl -E'print $2 x $1 while $ARGV[0] =~ /(\d+)(.)/g' 3a3b1c1d3e
aaabbbcdeee
@sshaw
sshaw / db.rake
Last active June 19, 2018 04:52
Remove MySQL AUTO_INCREMENT From Rails db:structure:dump
namespace :db do
namespace :structure do
task :dump => :environment do
# Can add more dump options to ~/.my.cnf:
#
# [mysqldump]
# skip-comments
#
command = %q{perl -i -pe's/AUTO_INCREMENT=\d+\s//' %s} % Rails.root.join("db/structure.sql")
sh command, :verbose => false do |ok, res|
@sshaw
sshaw / bad.plist
Created June 15, 2018 23:07
Example of Apple Property List (Plist) DTD Validation With xmllint
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>A</key>
<key>B</key>
<string>sshaw</string>
<string>DDEX</string>
</dict>
</plist>
@sshaw
sshaw / app-service-view-examples.rb
Last active November 11, 2017 23:12
Examples on the ways to separate an ActiveRecord domain model from UI layer in Rails/Ruby.
module PropertyManagement
class OnBoarding
#
# **********
# Setup
# **********
#
# ActiveRecord: None
# ActiveModel+freeze: None
# Hash: None, but param massaging may be necessary unless everything matches ActiveRecord
@sshaw
sshaw / pick.js
Last active June 10, 2017 21:36
JavaScript function to pluck truthy properties and functions from an Array of Objects
// https://gist.github.com/sshaw/e21c9a7c82aff15359804e90ea7042a3
// Pluck truthy properties and functions from an Array of Objects
//
// var a = [ {id: 123}, {id: 0}, {id: false}, {id: function() { return 'foo' }} ]
// pick('id', a) returns [123, 'foo']
// var f = pick('id')
// f(a)
var pick = function(property, array) {
var picker = function(_array) {
return _array.reduce(function(acc, v) {
@sshaw
sshaw / form_fields.rb
Last active August 6, 2017 19:26
Ruby module to help create classes for form parameters (or other things). Also see Class2: https://github.com/sshaw/class2
module FormFields
def self.included(klass)
klass.class_eval do
def self.fields(*args)
args.flatten!
attr_accessor(*args)
@@fields = args.map(&:to_sym)
end
end
end
@sshaw
sshaw / index.html
Last active April 10, 2017 23:55 — forked from sasharevzin/slack.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Slack Message to Emoji</title>
<script src="slack.js"></script>
<style>
h1 {
text-align: center;
}