Skip to content

Instantly share code, notes, and snippets.

@aaronmcadam
Created May 27, 2015 11:42
Show Gist options
  • Save aaronmcadam/d8cd6053e2bb1f546fac to your computer and use it in GitHub Desktop.
Save aaronmcadam/d8cd6053e2bb1f546fac to your computer and use it in GitHub Desktop.
in_memory_repo.rb
class InMemoryBackend
def initialize
@counter = 0
@map = {}
end
def create(record)
@counter = @counter + 1
record.id ||= @counter
map_for(record)[record.id] = record
end
def update(record)
map_for(record)[record.id] = record
end
def delete(record)
map_for(record).delete record.id
end
def find(klass, id)
map_for_class(klass).fetch id
end
def all(klass)
map_for_class(klass).values
end
def query(klass, selector)
send "query_#{selector.class.name.underscore}", selector
end
private
def map_for_class(klass)
@map[klass.to_s.to_sym] ||= {}
end
def map_for(record)
map_for_class(record.class)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment