Skip to content

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

License

Notifications You must be signed in to change notification settings

iago-silva/service_it

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

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)

About

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

Topics

Resources

License

Stars

Watchers

Forks