Exception: Treaty::Exceptions::Inventory

Inherits:
Base
  • Object
show all
Defined in:
lib/treaty/exceptions/inventory.rb

Overview

Raised when inventory definition or processing fails

Purpose

Indicates errors during inventory DSL processing, including invalid method calls, missing parameters, and invalid source types. Provides consistent error handling for the inventory system.

Usage

Raised in various inventory scenarios:

Invalid DSL Method

# When calling unknown method in treaty block
treaty :index do
  unknown_method :something
end
# => Treaty::Exceptions::Inventory: Unknown method 'unknown_method' in treaty block for action 'index'

Missing Required Parameters

# When 'from' parameter is missing
treaty :index do
  provide :posts
end
# => Treaty::Exceptions::Inventory: Inventory 'posts' requires 'from' parameter

# When inventory name is not a symbol
treaty :index do
  provide "posts", from: :load_posts
end
# => Treaty::Exceptions::Inventory: Inventory name must be a Symbol, got "posts"

Invalid Source

# When source is nil
treaty :index do
  provide :posts, from: nil
end
# => Treaty::Exceptions::Inventory: Inventory source cannot be nil

Integration

Can be rescued by application controllers:

rescue_from Treaty::Exceptions::Inventory, with: :render_inventory_error

def render_inventory_error(exception)
  render json: { error: exception.message }, status: :internal_server_error
end

Valid Sources

  • Symbol: Method name to call on controller (e.g., :load_posts)
  • Proc/Lambda: Callable object (e.g., -> { Post.all })
  • Direct value: String, number, or any other value (e.g., "Welcome")