Class: Pindo::TaskSystem::TaskResources::ResourceRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/pindo/module/task/task_resources/resource_registry.rb

Overview

资源类型注册表

职责:

  • 管理所有已注册的资源类型

  • 提供资源类型查询接口

  • 注册内置资源类型

Instance Method Summary collapse

Constructor Details

#initializeResourceRegistry

Returns a new instance of ResourceRegistry.



15
16
17
18
# File 'lib/pindo/module/task/task_resources/resource_registry.rb', line 15

def initialize
  @types = {}
  register_builtin_types
end

Instance Method Details

#all_namesArray<Symbol>

获取所有已注册的资源名称

Returns:

  • (Array<Symbol>)


45
46
47
# File 'lib/pindo/module/task/task_resources/resource_registry.rb', line 45

def all_names
  @types.keys
end

#all_typesArray<ResourceType>

获取所有资源类型对象

Returns:



51
52
53
# File 'lib/pindo/module/task/task_resources/resource_registry.rb', line 51

def all_types
  @types.values
end

#get(name) ⇒ ResourceType

获取资源类型

Parameters:

  • name (Symbol)

    资源名称

Returns:

Raises:

  • (ArgumentError)

    如果资源类型不存在



32
33
34
# File 'lib/pindo/module/task/task_resources/resource_registry.rb', line 32

def get(name)
  @types[name] or raise ArgumentError, "Unknown resource type: #{name}"
end

#register(name, type) ⇒ Object

注册资源类型

Parameters:

  • name (Symbol)

    资源名称

  • type (ResourceType)

    资源类型对象

Raises:

  • (ArgumentError)


23
24
25
26
# File 'lib/pindo/module/task/task_resources/resource_registry.rb', line 23

def register(name, type)
  raise ArgumentError, "type must be a ResourceType" unless type.is_a?(ResourceType)
  @types[name] = type
end

#registered?(name) ⇒ Boolean

检查资源类型是否已注册

Parameters:

  • name (Symbol)

    资源名称

Returns:

  • (Boolean)


39
40
41
# File 'lib/pindo/module/task/task_resources/resource_registry.rb', line 39

def registered?(name)
  @types.key?(name)
end