Skip to content

Instantly share code, notes, and snippets.

View psychocandy's full-sized avatar

Amir Friedman psychocandy

  • Berlin, Germany
View GitHub Profile
@psychocandy
psychocandy / URI-monkey-patch.rb
Created July 17, 2012 16:11
Fix ArgumentError invalid %-encoding for malformed URLs
# The following should prevent an ArgumentError "invalid %-encoding (...%)" exception from being raised for malformed URLs.
# To use this code simply drop this in your rails app initializers.
# See: https://github.com/rack/rack/issues/337
# Taken from: http://stackoverflow.com/a/11162317/1075006
module URI
major, minor, patch = RUBY_VERSION.split('.').map { |v| v.to_i }

Keybase proof

I hereby claim:

  • I am psychocandy on github.
  • I am amirf (https://keybase.io/amirf) on keybase.
  • I have a public key ASAZbAd4OFmWD8QsDVNMaMI_vcpJh79LpJpjeZyu8gkW_wo

To claim this, I am signing this object:

@psychocandy
psychocandy / .profile
Created December 21, 2011 05:08
My mac bash profile
# /etc/bash/bashrc
#
# This file is sourced by all *interactive* bash shells on startup,
# including some apparently interactive shells such as scp and rcp
# that can't tolerate any output. So make sure this doesn't display
# anything or bad things will happen !
# Test for an interactive shell. There is no need to set anything
# past this point for scp and rcp, and it's important to refrain from
@psychocandy
psychocandy / fish_prompt.fish
Created January 25, 2016 10:42
robbyrussell fish_prompt.fish with timestamp
# name: RobbyRussel
function _git_branch_name
echo (command git symbolic-ref HEAD ^/dev/null | sed -e 's|^refs/heads/||')
end
function _is_git_dirty
echo (command git status -s --ignore-submodules=dirty ^/dev/null)
end
function fish_prompt
@psychocandy
psychocandy / create_list.rb
Created May 28, 2013 13:14
Factory girl example
# one way:
FactoryGirl.create_list(:monetization_campaign, 10)
# another way:
10.times { FactoryGirl.create(:monetization_campaign) }
# guarentee ids:
10.times { |n| FactoryGirl.create(:monetization_campaign, id: n) }
@psychocandy
psychocandy / autovivify_hash.rb
Created February 17, 2013 13:57
Autovivification which allows you to nest away and save you a lot of nil? checks.
hash = Hash.new { |h,k| h[k] = Hash.new(&h.default_proc) }
hash[:foo]["bar"][:baz] = 13
# => {:foo=>{"bar"=>{:baz=>13}}}
@psychocandy
psychocandy / map_hash.rb
Created February 17, 2013 11:17
An idea for mapping to a hash. Kudos to @dorkalev.
# [1,2,3].map_hash { |x| [x, x*2] }
# => {1=>2, 2=>4, 3=>6}
# { foo: "bar", fiz: "baz" }.map_hash { |k,v| [v,k] }
# => {"bar"=>:foo, "baz"=>:fiz}
module Enumerable
def map_hash
Hash[*self.inject([]) { |arr, a| arr += yield(a) }]
end
end
@psychocandy
psychocandy / enum.rb
Last active December 12, 2015 09:59
A fair implementation of an enum in Ruby. Inspired by Elad Meidar's article on gistflow - http://gistflow.com/posts/682-ruby-enums-approaches
# usage:
# FRUITS = Enum.new(:apples, :oranges)
# FRUITS[:apples] # => 0
# FRUITS[0] # => :apples
class Enum < Hash
def initialize(*members)
super()
@reverse = {}
@psychocandy
psychocandy / git-unmerged
Last active December 12, 2015 00:08 — forked from antirez/gist:4554824
#!/usr/bin/tclsh8.5
#
# Install: clone and copy to somewhere in your $PATH, e.g:
# git clone https://gist.github.com/4681074.git git-unmerged && cd git-unmerged && chmod +x git-unmerged && sudo mv git-unmerged /usr/bin && cd .. && rm -rf git-unmerged
# Usage: git-unmerged branch1 branch2
#
# Shows all the non-common commits in the two branches, where non-common
# commits means simply commits with a unique commit *message*.
proc getlog branch {
@psychocandy
psychocandy / evil_algorithm.rb
Created December 13, 2012 11:06
Ruby program which finds the biggest prime factors for a number.
def generate(n)
return [] if n == 1
factor = (2..n).find { |x| n % x == 0 }
[factor] + generate(n / factor)
end