Skip to content

Instantly share code, notes, and snippets.

sfcgeorge / scenic_view_sort_patch.rb
Created Dec 16, 2019
Patch 1 method in Scenic's schema dumper so that views are sorted first alphabetically, and then have any dependencies resolved.
View scenic_view_sort_patch.rb
# frozen_string_literal: true
require 'rails'
require 'scenic'
module Scenic
# @api private
module SchemaDumper

Keybase proof

I hereby claim:

  • I am sfcgeorge on github.
  • I am sfcgeorge ( on keybase.
  • I have a public key ASCbgmrBCz_87ERTRKj2j_VQgtSIRfLz4aUq7rXokPf-zwo

To claim this, I am signing this object:

sfcgeorge / association_loader.rb
Created Sep 20, 2019
GraphQL Ruby Chain Loader
View association_loader.rb
# frozen_string_literal: true
require 'graphql/batch'
class AssociationLoader < GraphQL::Batch::Loader
def initialize(association_name)
@association_name = association_name
sfcgeorge /
Created May 15, 2019
Mobile Frameworks Comparison
Framework Multi platform Native code Native UI Native widgets Declarative UI Native UX
Native no yes yes yes no yes
Ruby Motion mobile yes yes yes no yes
Cordova mobile yes yes yes no yes
RNW yes no yes no yes with effort
NativeScript yes no yes no yes with effort
Flutter yes (web coming) yes yes no yes maybe
Cordova yes no no no yes no
sfcgeorge / count_estimate.sql
Created Sep 14, 2018
Faster PostgreSQL COUNT function for large result sets by using query planner estimates.
View count_estimate.sql
CREATE FUNCTION count_estimate(query text) RETURNS integer AS $$
rec record;
rows integer;
row integer;
rows := 1;
row := substring(rec."QUERY PLAN" FROM ' rows=([[:digit:]]+)')::integer;
IF (row != 0) THEN rows := rows * row; END IF;

Example Blog App with Auth

Pure Rails compared to Hyperloop

The purpose here is to show a high level overview of how Rails concepts map to Hyperloop concepts. It's not a full tutorial (I started doing that but it was way too long), but examples of key points.


Here's a simple auth example, with a comment showing all you have to add to hook it up to Hyperloop. In a production app you'd probably use Devise, but the Hyperloop acting_user bit would be the same!

sfcgeorge / concern.rb
Last active Feb 7, 2018
Tweaked ActiveSupport::Concern to work around Opal issue
View concern.rb
module ActiveSupport
# A typical module looks like this:
# module M
# def self.included(base)
# base.extend ClassMethods
# base.class_eval do
# scope :disabled, -> { where(disabled: true) }
# end
# end
View telephone_words.rb
require "pp"
1 => [],
2 => %w(A B C),
3 => %w(D E F),
4 => %w(G H I),
5 => %w(J K L),
6 => %w(M N O),
7 => %w(P Q R S),
sfcgeorge / json_slop.rb
Created Apr 11, 2017
Use JSON as a Ruby object like you just don't care, if you like OpenStruct you'll love JsonSlop!
View json_slop.rb
require "json"
class JsonSlop
def initialize(json)
@hash = json.is_a?(String) ? JSON.parse(json) : json
def call
sfcgeorge / opts_to_ivars.rb
Created Mar 17, 2016
Passing a lot of variables into a mailer that I want to access from the view, so decided to dynamically set the instance variables from opts
View opts_to_ivars.rb
class DynamicIvars
def greet(**options)
options.each { |k, v| instance_variable_set :"@#{k}", v }
p @hello
end hello: "world"
# => "world"