service_it

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

MIT License

Downloads
13.2K
Stars
16

ServiceIt

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.

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)
Package Rankings
Top 23.91% on Rubygems.org
Badges
Extracted from project README
Gem Version Build Status Code Climate