Skip to content

Instantly share code, notes, and snippets.

View gist:287675
# In reply to
# Put this in test_helper.rb to compare two arbitrarily nested structures.
# Usage: compare_objects(o1, o2). Raises an exception if it finds any differences.
# recursivly compare two objects. raise if a difference was found, return if not.
def compare_objects(wanted, actual, path=[])
if wanted.kind_of?(Hash)
raise "Objects differ at #{path.join(".")}: extra keys in wanted: #{(wanted.keys - actual.keys).inspect}" if (wanted.keys - actual.keys).length > 0
raise "Objects differ at #{path.join(".")}: extra keys in actual: #{(actual.keys - wanted.keys).inspect}" if (actual.keys - wanted.keys).length > 0
wanted.keys.sort.each do |key|
View route_spec.rb
describe "routes to the articles controller" do
extend RouteSpecHelpers
scope_options controller: 'articles', blog: 'my_blog'
get '/blogs/my_blog/articles/new' => { action: 'new' }
post '/blogs/my_blog/articles' => { action: 'create' }
get '/blogs/my_blog/articles/1' => {action: 'show', id: '1' }
View route_spec.rb
describe "routes to the articles controller" do
extend RouteSpecHelpers
scope_options controller: 'articles', blog: 'my_blog' do
get '/blogs/my_blog/articles/new' => { action: 'new' }
post '/blogs/my_blog/articles' => { action: 'create' }
get '/blogs/my_blog/articles/1' => {action: 'show', id: '1' }
drj42 /
Created Feb 6, 2012
This is a cheat sheet for Emacs org-mode... in org-mode format!
vicentereig / ruby_csv_simple_object_mapping.rb
Last active Oct 7, 2015
Awesome FasterCSV Features. Thanks @JEG2
View ruby_csv_simple_object_mapping.rb
require 'csv'
class Person
attr_accessor :id, :name, :email
def self.csv_load(meta, headers, row)
person =
juanje / gist:3797297
Created Sep 28, 2012
Mount apt cache of a Vagrant box in the host to spin up the packages installation
View gist:3797297

This is a little trick I use to spin up the packages instalation on Debian/Ubuntu boxes in Vagrant.

I add a simple function that checks if a directory named something similar to ~/.vagrant.d/cache/apt/opscode-ubuntu-12.04/partial (it may have another path in Windows or MacOS) and create the directory if it doesn't already exist.

def local_cache(basebox_name)
  cache_dir ='cache', 'apt', basebox_name)
  partial_dir = cache_dir.join('partial')
  partial_dir.mkdir unless partial_dir.exist?
pcreux /
Last active Dec 21, 2018
Gourmet Service Objects - Lightning Talk - - Feb 27, 2014

Gourmet Service objects


 Feb 27, 2014
staltz /
Last active Dec 8, 2021
The introduction to Reactive Programming you've been missing
haasn /
Last active Sep 17, 2021
Firefox bullshit removal via about:config

Firefox bullshit removal

Updated: Just use qutebrowser (and disable javascript). The web is done for.

balupton /
Last active Nov 15, 2017
Seems the open-source world requires a code of conduct for everything right now. So here is a draft one I’ve done up for Bevry. Feedback welcome.

Bevry Draft Code of Conduct

TLDR: Be a productive member of civilised society, no more, no less.

Results > Character > Identity.

We care only about your character and your results. We discriminate at the individual level, not the group identity level. You can be whatever identity you want, your identity is your thing not ours, identity is meaningless to us.

Libertarian Values.