8000 GitHub - benpickles/operatic at v0.3.0
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

benpickles/operatic

Repository files navigation

Operatic

GitHub Actions status

A minimal standard interface for your operations.

Installation

Add Operatic to your application's Gemfile and run bundle install.

gem 'operatic'

Usage

An Operatic class encapsulates an operation and communicates the status of the operation via its result object. As well as being either a #success? or a #failure? further data can be attached via #success!, #failure! or convenience accessors.

class SayHello
  include Operatic

  # Readers for attributes passed via `.call`.
  attr_reader :name

  # Declare convenience accessors on the result.
  result :message

  def call
    # Exit the method and mark the result as a failure.
    return failure! unless name

    # Mark the result as a success and attach further data.
    success!(message: "Hello #{name}")
  end
end

result = SayHello.call(name: 'Dave')
result.success? # => true
result.message  # => "Hello Dave"
result.to_h     # => {:message=>"Hello Dave"}

result = SayHello.call
result.failure? # => true
result.success? # => false
result.message  # => nil
result.to_h     # => {}

A Rails controller might use Operatic like this:

class HellosController < ApplicationController
  def create
    result = SayHello.call(name: params[:name])

    if result.success?
      render plain: result.message
    else
      render :new
    end
  end
end

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Operatic project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

About

A minimal standard interface for your Ruby operations.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Contributors 2

  •  
  •  
0