Module: OmniService

Includes:
Dry::Core::Constants
Defined in:
lib/omni_service.rb,
lib/omni_service/strict.rb,
lib/omni_service/version.rb

Overview

Framework for composable business operations with railway-oriented programming.

Core concepts:

  • Components: callables returning Success/Failure monads

  • Results: structured output with context, params, and errors

  • Composition: sequence, parallel, transaction, namespace, collection

Examples:

Simple operation

class Posts::Create
  extend OmniService::Convenience

  option :post_repo, default: -> { PostRepository.new }

  def self.system
    @system ||= sequence(
      validate_params,
      transaction(create_post, on_success: [notify_subscribers])
    )
  end
end

result = Posts::Create.system.call({ title: 'Hello' }, current_user: user)
result.success?  # => true
result.context   # => { post: <Post> }

See Also:

Defined Under Namespace

Modules: Convenience, Helpers, Strict Classes: Async, Collection, Component, Context, Error, FindMany, FindOne, Inspect, Namespace, OperationFailed, Optional, Parallel, Params, Result, Sequence, Shortcut, Transaction

Constant Summary collapse

Types =
Dry.Types()
VERSION =
'0.1.0'

Class Method Summary collapse

Class Method Details

.sync_callbacks?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/omni_service.rb', line 46

def sync_callbacks?
  !!Thread.current[:omni_service_sync_callbacks]
end

.with_sync_callbacks(value = true) ⇒ Object

rubocop:disable Style/OptionalBooleanParameter



50
51
52
53
54
55
56
# File 'lib/omni_service.rb', line 50

def with_sync_callbacks(value = true) # rubocop:disable Style/OptionalBooleanParameter
  old_value = Thread.current[:omni_service_sync_callbacks]
  Thread.current[:omni_service_sync_callbacks] = value
  yield
ensure
  Thread.current[:omni_service_sync_callbacks] = old_value
end