Skip to content

Instantly share code, notes, and snippets.

Bradley Schaefer soulcutter

Block or report user

Report or block soulcutter

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
soulcutter / test.rb
Created Mar 8, 2019
create_or_find_by sequence exhaustion
View test.rb
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source ""
git_source(:github) { |repo| "{repo}.git" }
gem "rails", github: "rails/rails"
soulcutter / digest_auth.rb
Last active Feb 1, 2019
Faraday request middleware for digest auth
View digest_auth.rb
# -*- coding: utf-8 -*-
require 'faraday'
require 'net/http/digest_auth'
module Faraday
# Public: A Faraday middleware to use digest authentication. Since order of
# middlewares do care, it should be the first one of the Request middlewares
# in order to work properly (due to how digest authentication works).
# If some requests using the connection don't need to use digest auth you
soulcutter / capyconsole.rake
Created May 5, 2014
Capyconsole rake task
View capyconsole.rake
desc "Launch a Capybara session in a console"
task capyconsole: :environment do
require "capybara"
require "pry"
driver = case ENV.fetch('DRIVER', 'phantomjs')
when 'phantomjs'
require "capybara/poltergeist"
Capybara.register_driver :poltergeist_debug do |app|
soulcutter / speed_limit.rb
Created Apr 8, 2018
A simple way to throttle enumeration
View speed_limit.rb
class SpeedLimit
def initialize(enumerator)
@enumerator = enumerator.to_enum
def at(count, per:)
increment_seconds = case per
when :second then 1.0 / count.to_f
when :minute then 60.0 / count.to_f
when :hour then 3600.0 / count.to_f
soulcutter / tapper.rb
Created Mar 9, 2018
Tap vs Local Variables
View tapper.rb
def level_descriptions=(input)
write_attribute(:levels_description, input).tap do |_result|
flush_cache :levels_description
# same number of lines, one less method call, one less block, but pretty much the same as
# far as I'm concerned.
def level_descriptions=(input)
result = write_attribute(:levels_description, input)
View memoize_example.rb
module Memo
def memoize(method_name)
original_method = instance_method(method_name)
method_cache = { |h, k| h[k] = {} }
define_method(method_name) do |*args, &block|
if method_cache[self].key?([args, block])
method_cache[self][[args, block]]
method_cache[self][[args, block]] = original_method.bind(self).call(*args, &block)
soulcutter / instrumentor.rb
Created Nov 14, 2017
Instrumentation for methods
View instrumentor.rb
module Instrumenter
class Instrumentation < Module
def initialize(method, label)
@method = method
@label = label
define_method(method) do |*args|
start_time =
super(*args).tap do
end_time =
soulcutter / urinal_game.rb
Last active Nov 5, 2017
Example of what object syntax could look like
View urinal_game.rb { |urinal| }
Urinal =, :location) { def adjacent_urinals; location.adjacent_urinals; end }
soulcutter / rubyprof.rake
Created Apr 14, 2012
Ruby profiling rake task
View rubyprof.rake
require 'ruby-prof'
require 'ruby-prof/task' do |t|
t.test_files = FileList['test/integration/**/patients_test.rb']
t.output_dir = File.join(Rails.root, 'tmp')
t.printer = :graph_html
t.min_percent = 10
View delegates.rb
require "delegate"
Foo =
Bar = == # => true == # => true == # => false
You can’t perform that action at this time.