Skip to content

Instantly share code, notes, and snippets.

View softcraft-development's full-sized avatar

Craig Walker softcraft-development

View GitHub Profile
# Goal: Allow addition of instances to a collection in a factory-built object
# when those instances require references to the parent.
# Typically occurs in Rails when one model has_many instances of another
# See more at:
# http://stackoverflow.com/questions/2937326/populating-an-association-with-children-in-factory-girl
class Factory
def has_many(collection)
# after_build is where you add instances to the factory-built collection.
class Foo
CONST_ON_FOO = "the constant on Foo"
class << self
puts "When we're defining CONST_ON_FOOS_CLASS, we're actually in: #{self}, a #{self.class}"
CONST_ON_FOOS_CLASS = "the constant on Foo's class"
end
end
instance = Foo.new
begin
begin
raise Exception.new("An Exception")
rescue => e
puts "Rescued an unspecified error: #{e.message}"
end
rescue Exception => e
puts "Rescued an exception: #{e.message}"
end
@softcraft-development
softcraft-development / output.txt
Created September 2, 2016 23:06
output of npm test for favicons-webpack-plugin
$ npm test
> favicons-webpack-plugin@0.0.7 test D:\projects\favicons-webpack-plugin
> ava
loudRejection/api is deprecated. Use the currently-unhandled module instead.
4 passed
3 failed
module InstanceCache
def self.included(receiver)
receiver.extend(ClassMethods)
end
module ClassMethods
# Override me for good times
def find_by_cache_key(cache_key)
find(cache_key)
module A
def a_method
"a method"
end
end
module B
extend A
def b_method
@softcraft-development
softcraft-development / git-switch
Created May 11, 2012 14:15
A ruby shell script to switch git branches based on a regex
#!/usr/bin/env ruby
search = Regexp.new(ARGV[0])
output = `git branch`
matching = output.lines.select{ |l| l.match(search) }
if matching.size == 0
STDERR.puts "No branch matches #{ARGV[0]}"
elsif matching.size == 1
`git checkout #{matching[0].strip}`
else
puts "Multiple branches matched:"
@softcraft-development
softcraft-development / t
Created August 1, 2011 23:30
Craig's individual test runner
#!/usr/bin/env ruby
require "rubygems"
require 'activesupport'
file_name = ARGV[0].underscore.gsub(/_test$/, "")
test_name = ARGV[1].gsub(" ", "_") if ARGV[1]
paths = [
"test/unit/#{file_name}_test.rb",
"test/unit/helpers/#{file_name}_test.rb",
@softcraft-development
softcraft-development / hash_evoke.rb
Created June 13, 2010 23:45
Retrieve a value from a Hash. If the key is not in the hash, return the given default value and save it to the hash
class Hash
# Pass either a default value or a block to return it (a la Hash#fetch()).
# If both are passed, the block will take precedence over the default value
def evoke(key, default = nil)
if include?(key)
self[key]
else
self[key] = block_given? ? yield : default
end
end
# Out of the box, Ruby's Rational class doesn't know how to multiply or divide a BigDecimal;
# You get: "TypeError: Rational can't be coerced into BigDecimal" when you try.
class Rational
alias :"old_/" :"/"
def /(a)
begin
# Keep existing behavior if we can
send(:"old_/", a)
rescue TypeError