Skip to content

Instantly share code, notes, and snippets.

Chris O'Sullivan thechrisoshow

Block or report user

Report or block thechrisoshow

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
thechrisoshow / imphash.patch
Created Feb 20, 2018
This is a patch to Ruby 2.5.0 to enable es6 like hash literals - instructions in the comments
View imphash.patch
From a034498e36c02715b9201646d4ce1ddcddf118c3 Mon Sep 17 00:00:00 2001
From: Shugo Maeda <>
Date: Wed, 29 Apr 2015 09:14:15 +0900
Subject: [PATCH] support ES6-like hash literals.
parse.y | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 72 insertions(+), 17 deletions(-)
diff --git a/parse.y b/parse.y
View interruptible_sleep.rb
# Shamelessly stolen from
module InterruptibleSleep
def interruptible_sleep(seconds)
@sleep_check, @sleep_interrupt = IO.pipe[@sleep_check], nil, nil, seconds)
def interrupt_sleep
@sleep_interrupt.close if @sleep_interrupt
View banana_array.m
@interface BananaBox : NSObject
- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
@implementation AppleCart
NSMutableArray *_bananas;
-(id) init {
self = [self init]
View banana_dictionary.m
@interface Banana : NSObject
- (id)objectForKeyedSubscript:(id)key;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
@implementation Banana
NSMutableDictionary *_attributes;
-(id) init {
self = [self init];
thechrisoshow / special_methods.m
Created Sep 21, 2012
Special methods for adding subscripting
View special_methods.m
// To add array style subscripting:
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx; // setter
- (id)objectAtIndexedSubscript:(NSUInteger)idx; // getter
// To add dictionary style subscripting
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key; // setter
- (id)objectForKeyedSubscript:(id)key; // getter
thechrisoshow / new_literal.m
Created Sep 21, 2012
New literal subscripting in objective c
View new_literal.m
NSArray *anArray = @[a,b,c];
NSDictionary *aDictionary @{ a : a1, b : b1};
// New subscripting format
anArray[0]; // => returns a
aDictionary[a] // => returns a1
thechrisoshow / new_accessors.m
Created Sep 5, 2012
If you want to add the new array/dictionary accessors to IOS5
View new_accessors.m
// Put this in your ..-Prefix.pch file
// Add support for subscripting to the iOS 5 SDK.
@interface NSObject (SubscriptingSupport)
- (id)objectAtIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj atIndexedSubscript:(NSUInteger)idx;
- (void)setObject:(id)obj forKeyedSubscript:(id <NSCopying>)key;
- (id)objectForKeyedSubscript:(id)key;
thechrisoshow / account.rb
Created Jul 26, 2012
How to best represent a field that uses multiple inputs with activerecord
View account.rb
# The problem I have is that I've got a sort_code field in the database, and I want to keep that as one field
# BUT I want users to edit it in the form using 3 different fields.
# My initial solution was to use virtual attributes and divide it this way.
# Can you think of a better way?
class Account < ActiveRecord::Base
def sort_code_one
thechrisoshow / dynamic_validations.rb
Created Mar 29, 2012
How to add validations to a specific instance of an active record object?
View dynamic_validations.rb
class Banana < ActiveRecord::Base; end
banana =
banana.valid? #=> true
banana.singleton_class.validates_presence_of :name
banana.valid? #=> true - why did the validation not work?
banana.class.validates_presence_of :name
banana.valid? #=> false - as we'd expect...but now...
thechrisoshow / application_controller_spec.rb
Created Mar 5, 2012
Use of anonymous controller in rspec tests
View application_controller_spec.rb
require 'spec_helper'
describe ApplicationController do
describe "current_user" do
controller do
before_filter :authorize
def index
You can’t perform that action at this time.