Skip to content

Instantly share code, notes, and snippets.

jimweirich / allocation.rb
Last active Jan 3, 2016
This is a refactoring of the Allocation Elimination code. The original code (by Mike Doel and Adam McRae) was originally refactored by a large group at the Neo pairing booth at CodeMash. I then took the final version there and continued to refactor over the course of an evening and this is the result of that. I hope to blog about the refactoring…
View allocation.rb
Allocation =, :person, :start, :finish) do
include Comparable
def mergable_with?(other)
if start > other.start
same_assignment?(other) &&
finish >= other.start - 1
jimweirich / beer_song_test.rb
Created Nov 19, 2013
For Cincy.rb tonight. Download the following test file. Remove the first "skip" command get the test to pass. Then remove the next "skip" command and continue.
View beer_song_test.rb
gem 'minitest'
require 'minitest/autorun'
require './beer_song'
class BeerSongTest < Minitest::Test
V8 =
"8 bottles of beer on the wall, 8 bottles of beer.\n" +
"Take one down and pass it around, 7 bottles of beer on the wall.\n"
def new
allocate.tap { |obj| obj.initialize }
jimweirich / Rakefile
Last active Jan 10, 2019
Bottles of Beer, for Sandi Metz
View Rakefile
#!/usr/bin/env ruby
require 'rake/clean'
require 'rake/testtask'
task :default => [:spec, :test]
task :spec do
sh "rspec ."
jimweirich / weird.rb
Created Nov 5, 2013
What does the following print? I was surprised. (Actually, I was surprised it was legal syntax.)
View weird.rb
def foo(a=:default, b)
puts "a=#{a}, b=#{b}"
foo(:x, :y)
jimweirich / configure.rb
Created Oct 2, 2013
Demonstrating a flexible DSL for configuration .
View configure.rb
def project(name, &block), &block)
class Project
def initialize(name, &block)
@name = name
@context = eval("self", block.binding)
instance_eval(&block) if block_given?
View run.out
$ rspec xx_spec.rb
Finished in 0.00287 seconds
4 examples, 0 failures
jimweirich / spy_test_fragment.rb
Created Aug 31, 2013
Example how to use argument matchers with spies.
View spy_test_fragment.rb
def test_spy
d = flexmock(f: :ok)
assert_equal :ok, d.f("Woof",2)
assert_spy_called d, :f, String, Integer
jimweirich / JRuby_Output.txt
Last active Dec 21, 2015
Differences between JRuby and Ruby2 Ripper output
View JRuby_Output.txt
SOURCE: defined?(a)
[:program, [:stmts_add, [:stmts_new], [:defined, [:@rparen, ")", [1, 10]]]]]
SOURCE: "my name is #{name}"
jimweirich / sqrt_spec.rb
Created Aug 10, 2013
Square Root function
View sqrt_spec.rb
# -*- coding: utf-8 -*-
Sqrt = ->(n) {
guess = n / 2.0
loop do
if (guess**2 - n) < 0.0001
return guess
guess = (guess + n/guess) / 2.0