This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Why You Should Never Use An ORM | |
Having built two object mappers in Ruby (MongoMapper and ToyStore), I would like to | |
throw out a crazy thought. What if, on your next project, you ditch the ORM. | |
No ActiveRecord. No DataMapper. No anything. Just you and a lower level driver, whispering | |
sweet nothings into Ruby classes and modules. Could you? Would you? DARE you? | |
We Rubyists are all about aesthetics, right? We love declaring has_many and belongs_to! | |
Scope this! Boom! Instant magic happens behind the scenes. Fancy proxies are assembled, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'pp' | |
require 'zlib' | |
require 'benchmark' | |
require 'rubygems' | |
require 'active_support/gzip' | |
require 'mongo_mapper' | |
MongoMapper.database = 'testing' | |
MongoMapper.database.collections.each(&:remove) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# gem install sunspot_rails | |
class Foo | |
include MongoMapper::Document | |
include Sunspot::Rails::Searchable | |
key :title, String | |
searchable do | |
text :title | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module PageViewsByMonth | |
def map | |
<<-MAP | |
function() {…} | |
MAP | |
end | |
def reduce | |
<<-REDUCE | |
function() {…} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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\$ " |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'pp' | |
require 'rubygems' | |
require 'mongo_mapper' | |
MongoMapper.database = 'testing' | |
class Comment | |
include MongoMapper::EmbeddedDocument | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Stylesheet | |
include MongoMapper::Document | |
class Processor | |
def self.errors | |
[] | |
end | |
attr_reader :contents |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module ValidatesExistenceOfPlugin | |
def self.included(model) | |
model.plugin ValidatesExistenceOfPlugin | |
end | |
module ClassMethods | |
def validates_existence_of(*args) | |
add_validations(args, ValidatesExistenceOfPlugin::ValidatesExistenceOf) | |
end | |
end |