Skip to content

Instantly share code, notes, and snippets.

@sshaw
sshaw / plans.md
Last active July 26, 2025 22:36
Table of Shopify Plan Names Returned by their GraphQL and REST APIs

Shopify Plan Names from GraphQL and REST APIs

The REST values are not listed anywhere in the docs. They are derrieved from an app with 100s of shops. GraphQL fields come from the Admin API's shops query. displayName is depricated.

REST plan_name REST plan_display_name GraphQL displayName GraphQL publicDisplayName
affiliate Development Development Development
basic Basic Basic Basic
@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