Skip to content

Instantly share code, notes, and snippets.

@jnunemaker
jnunemaker / map_reduce.rb
Created August 16, 2010 17:17
A way of making map/reduce queries using a class
module PageViewsByMonth
def map
<<-MAP
function() {…}
MAP
end
def reduce
<<-REDUCE
function() {…}
@jnunemaker
jnunemaker / gist:468109
Created July 8, 2010 14:52 — forked from jseifer/gist:468075
rvm version and git branch/dirtyness in prompt
function __git_dirty {
git diff --quiet HEAD &>/dev/null
[ $? == 1 ] && echo "!"
}
function __git_branch {
__git_ps1 "(%s)"
}
function __my_rvm_ruby_version {
@jnunemaker
jnunemaker / git-branch-in-prompt.sh
Created July 8, 2010 12:33
git completion and branch in prompt stuff
function parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
PS1="$RED\$(date +%H:%M) \w$YELLOW \$(parse_git_branch)$GREEN\$ "
@jnunemaker
jnunemaker / atomic_embedded_pull.rb
Created June 17, 2010 14:51
Atomically remove embedded doc from doc in mongomapper
require 'pp'
require 'rubygems'
require 'mongo_mapper'
MongoMapper.database = 'testing'
class Comment
include MongoMapper::EmbeddedDocument
end
# I need class C to call the foo method for each module included
# that has the method foo. Order does not matter as much as each
# method getting called. alias method chain?
module A
def foo
super
puts 'a'
end
end
@jnunemaker
jnunemaker / stylesheet.rb
Created May 17, 2010 22:16
stripped down version of processors in the stylesheet model in harmonyapp.com
class Stylesheet
include MongoMapper::Document
class Processor
def self.errors
[]
end
attr_reader :contents
@jnunemaker
jnunemaker / validates_existence_of.rb
Created May 7, 2010 13:23
Validates existence of in MongoMapper
module ValidatesExistenceOfPlugin
def self.included(model)
model.plugin ValidatesExistenceOfPlugin
end
module ClassMethods
def validates_existence_of(*args)
add_validations(args, ValidatesExistenceOfPlugin::ValidatesExistenceOf)
end
end
# Patch until MM 0.7.6 which fixes this:
# http://github.com/jnunemaker/mongomapper/commit/a721b66d9bc9ef78a5ce32dd2eb36d24abd4b953
module SetWithTypecasting
def self.included(model)
model.plugin SetWithTypecasting
end
module ClassMethods
def set(*args)
criteria, updates = criteria_and_keys_from_args(args)
@jnunemaker
jnunemaker / group_sum.rb
Created May 6, 2010 19:13
Summing ratings with group in MongoDB
require 'rubygems'
require 'mongo'
require 'pp'
db = Mongo::Connection.new.db('testing')
db.collections.each { |c| c.remove }
articles = db['articles']
ratings = db['ratings']
@jnunemaker
jnunemaker / mongodb_compound_unique_index.rb
Created May 6, 2010 17:52
MongoDB compound unique index
require 'rubygems'
require 'mongo'
uid, aid = BSON::ObjectID.new, BSON::ObjectID.new
db = Mongo::Connection.new.db('testing')
db.drop_collection('ratings')
db.create_collection('ratings')
ratings = db['ratings']
ratings.create_index([[:user_id, Mongo::ASCENDING], [:article_id, Mongo::ASCENDING]], :unique => true)