Skip to content

Instantly share code, notes, and snippets.

View chrisbloom7's full-sized avatar

Chris Bloom chrisbloom7

View GitHub Profile
@chrisbloom7
chrisbloom7 / singleton_test_isolation.rb
Created October 2, 2019 02:57
Using an anonymous subclass to test singleton objects in isolation
class MySingletonClass
include Singleton
attr_reader :client
def initialize
@client = Service::We::Only::Ever::Need::One::Connection::To.new(SERVICE_URL)
end
end
@chrisbloom7
chrisbloom7 / ex_passing_slices_and_arrays_by_val.go
Created June 4, 2019 00:57
Surprising behavior when passing arrays and slices to functions in Go
package main
import (
"fmt"
)
var a1 = [3]int{1, 2, 3}
var s1 = a1[0:3]
func main() {
@chrisbloom7
chrisbloom7 / prime.rb
Created May 22, 2019 16:31
Detecting prime numbers in Ruby
# A prime is a natural number greater than 1 that cannot be formed by multiplying two smaller natural numbers
def prime?(int)
# A prime is a natural number greater than 1...
return false if int < 2
# Is _int_ evenly divisible by any number 2 -> int-1?
(2..(int - 1)).each do |divisor|
return false if int % divisor == 0
end
return true

Doubly Linked List implementation in Ruby

Setup

  • Install Ruby ~> 2.6
  • gem install rspec
  • Open an IRB session with irb -r ./linked_list.rb
list = LinkedList.new
@chrisbloom7
chrisbloom7 / A ruby module to assist in capturing stdout and stderr from a detached thread in jRuby.md
Last active April 9, 2019 21:07
Ruby module to assist in capturing stdout/stderr from a detached thread

A ruby module to assist in capturing stdout/stderr from a detached thread in jRuby

  1. create some temp files (but not Tempfiles since they would be GC'd too quickly)
  2. append standard file descriptor redirects to the commands that we'll run in the detached spawned process, i.e. 1>>stdout_tempfile_path 2>>stderr_tempfile_path
  3. tack on a final command that will trigger copying the files to S3 regardless of exit status of original commands, i.e. {original commands with io redirection &&'d together}; bundle exec rake cleanup_task
  4. cleanup other io redirection temp files older than some threshold

Example usage:

@chrisbloom7
chrisbloom7 / I18n for Panini.md
Last active April 9, 2019 21:10
Adding a MailChimp Template Language (MTL) based I18n helper for Panini templates

i18n for Panini

Requirements

Other than the default Panini pieces, you will also need to make sure that lodash is included as a devDependencies in your package.json

Usage

Tag a section of text as translatable. The section will be replaced with a set of if/elseif/else Merge Tags for each translation provided, otherwise only the wrapped content is displayed.

@chrisbloom7
chrisbloom7 / rake_benchmark.rb
Created June 8, 2016 15:09 — forked from harley/rake_benchmark.rb
Benchmarking a rake task
# Put this in Rakefile (doesn't matter where)
require 'benchmark'
class Rake::Task
def execute_with_benchmark(*args)
bm = Benchmark.measure { execute_without_benchmark(*args) }
puts " #{name} --> #{bm}"
end
alias_method :execute_without_benchmark, :execute
@chrisbloom7
chrisbloom7 / Gemfile
Last active August 29, 2015 14:15
TestUnit setup/teardown order in Ruby 2.1 with shoulda-context, factory_girl_rails and database_cleaner
source 'https://rubygems.org'
ruby '2.1.4'
gem 'rails', '~> 3.2.0'
gem 'mysql2'
group :development, :test do
gem 'byebug'
@chrisbloom7
chrisbloom7 / .rails_aliases
Last active January 31, 2019 16:15
Bash shortcuts for routing Rails commands through the binstubs if they are present, or fallback to the other version-dependent methods
# RUBY / RUBY ON RAILS COMMANDS
alias bexec='bundle exec'
alias rails_mv="bexec rails -v | sed 's/Rails \([0-9]\).*/\1/g'"
# Alias the rake command to Spring binstubs or fallback to "bundle exec"
# http://goo.gl/HkhHAf, http://goo.gl/STtIvF
function brake {
if [ -f bin/rake ]
then
bin/rake "$@"
else
@chrisbloom7
chrisbloom7 / Capfile
Last active June 14, 2016 07:37 — forked from toobulkeh/deploy.rb
Open a Rails console via Capistrano 3 (requires capistrano-rvm gem)
require 'capistrano/rvm'