Skip to content

Instantly share code, notes, and snippets.

@joakimk
Last active October 11, 2015 18:58
Show Gist options
  • Save joakimk/3904952 to your computer and use it in GitHub Desktop.
Save joakimk/3904952 to your computer and use it in GitHub Desktop.
Runnable minimapper example (you just need some version of ruby installed)
# Copy and paste this into a terminal:
gem install minimapper
gem install activemodel # required for Minimapper::Entity[::Rails] (you can use Minimapper::Entity::Core without it)
curl https://gist.github.com/joakimk/3904952/raw/56b592e6eaa5a0206bf9207b0ee53aa0114a53eb/minimapper_example.rb > minimapper_example.rb
ruby minimapper_example.rb
# minimapper_example.rb
require "rubygems"
require "minimapper"
require "minimapper/entity"
require "minimapper/mapper/memory"
class User
include Minimapper::Entity
attributes :name, :email
validates :name, :presence => true
end
class UserMapper < Minimapper::Mapper::Memory
end
## Creating
user = User.new(:name => "Joe")
user_mapper = UserMapper.new
user_mapper.create(user)
## Finding
user = user_mapper.find(user.id)
p user.name # => Joe
p user_mapper.first.name # => Joe
## Updating
user.name = "Joey"
user_mapper.update(user)
p user_mapper.first.name # => Joey
## Deleting
old_id = user.id
user_mapper.delete(user)
p user.id # => nil
p user_mapper.find_by_id(old_id) # => nil
# user_mapper.find(old_id) # raises Minimapper::Common::CanNotFindEntity
# user_mapper.delete_all
# user_mapper.delete_by_id(1)
## Using a repository
require "minimapper/repository"
repository = Minimapper::Repository.build({
:users => UserMapper.new
# :projects => ProjectMapper.new
})
user = User.new(:name => "Joe")
repository.users.create(user)
p repository.users.find(user.id).name # => Joe
repository.users.delete_all
## Using ActiveModel validations
user = User.new
repository.users.create(user)
p repository.users.count # => 0
p user.errors.full_messages # Name can't be blank
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment