service_it icon indicating copy to clipboard operation
service_it copied to clipboard

[Service Objects] Simple gem to keep your controllers and models slim and readable

ServiceIt

Gem Version Build Status Code Climate

Facilitate the creation of Service Objects, providing the basic and enough to have a complete one and letting you free to use on your own way.

  • ServiceIt
    • Installation
    • With Bundler
    • Rails Generator
    • Usage
    • Example

Installation

$ gem install service_it

With Bundler

Add this line to your Gemfile:

gem 'service_it', '~> 2.0.0'

And then execute:

$ bundle

Rails Generator

You can use Rails generator to create a Service

$ rails g service NAME

This will create:

├── app
    ├── services
        └── name.rb

Usage

class Foo < ServiceIt::Base
  def perform
    # put your logic here
    # you can use params that became variables
  end
end

Call your service from anywhere (controllers, models, migrations...)

Foo.call(foo: foo, bar: bar)

Example

# app/services/release_post.rb
class ReleasePost < ServiceIt::Base
  def perform
    post.prepare_to_release
    post.update(released_at: Date.current)
  end
end
ReleasePost.call(post: @post)