Skip to content
📐 Command object Interface for Ruby
Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
.travis.yml
Gemfile
LICENSE
README.md
Rakefile
serviz.gemspec

README.md

Serviz

Gem Build Status Maintainability

Minimalistic Service Class Interface for Ruby

Serviz provides a minimal interface to unify and homogenize your Sevice or Command objects in your Ruby code.

Installation

Add this line to your application's Gemfile:

gem 'serviz'

And then execute:

> bundle install

Or install it yourself as:

> gem install serviz

Usage

  • Your class should inherit from Serviz::Base class
  • Your class should implement #call method:
    • add results via self.result=
    • add errors via self.errors=
    • return self always

Example:

class RegisterUser < Serviz::Base
  def initialize(user)
    @user = user
  end

  def call
    if @user.valid?
      @user.register
      @user.send_notification

      self.result = @user
    else
      self.errors << 'Invalid user'
    end

    self
  end
end
operation = RegisterUser.call(user)

if operation.success?
  puts "[SUCCESS] #{operation.result.name} registered!"
else
  puts "[ERROR] #{operation.errors.join(', ')}"
end

Development

Any kind of feedback, bug report or enhancement are really welcome!

To contribute, just fork the repo, hack on it and send a pull request. Don't forget to add specs for behaviour changes and run the test suite:

> bundle exec rspec

License

Copyright (c) Marc Anguera. Serviz is released under the MIT License.

You can’t perform that action at this time.