Class: Tasker::NamedTask
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Tasker::NamedTask
- Defined in:
- app/models/tasker/named_task.rb
Constant Summary collapse
- DEFAULT_VERSION =
Default version for new tasks
'0.1.0'
- DEFAULT_NAMESPACE =
Default namespace name
'default'
Class Method Summary collapse
-
.find_latest_version(namespace_name, task_name) ⇒ Object
Find latest version of a named task in a namespace.
-
.find_or_create_by_full_name!(name:, namespace_name: DEFAULT_NAMESPACE, version: DEFAULT_VERSION) ⇒ Object
Find or create with namespace and version support.
-
.version_exists?(namespace_name, task_name, version) ⇒ Boolean
Check if a specific version exists.
Instance Method Summary collapse
-
#concurrent? ⇒ Boolean
Get concurrency setting from configuration.
-
#config ⇒ Object
Configuration accessor with defaults.
-
#default_namespace? ⇒ Boolean
Check if this uses the default namespace.
-
#full_name ⇒ Object
Full qualified name: namespace.name@version.
- #namespace_name ⇒ Object
-
#qualified_name ⇒ Object
Short name without version: namespace.name.
-
#update_config!(new_config) ⇒ Object
Update configuration.
Methods inherited from ApplicationRecord
configure_database_connections, database_configuration_exists?
Class Method Details
.find_latest_version(namespace_name, task_name) ⇒ Object
Find latest version of a named task in a namespace
108 109 110 111 112 113 |
# File 'app/models/tasker/named_task.rb', line 108 def self.find_latest_version(namespace_name, task_name) in_namespace(namespace_name) .where(name: task_name) .order(version: :desc) .first end |
.find_or_create_by_full_name!(name:, namespace_name: DEFAULT_NAMESPACE, version: DEFAULT_VERSION) ⇒ Object
Find or create with namespace and version support
50 51 52 53 54 55 56 57 |
# File 'app/models/tasker/named_task.rb', line 50 def self.find_or_create_by_full_name!(name:, namespace_name: DEFAULT_NAMESPACE, version: DEFAULT_VERSION) namespace = TaskNamespace.find_or_create_by!(name: namespace_name) find_or_create_by!( task_namespace: namespace, name: name, version: version ) end |
.version_exists?(namespace_name, task_name, version) ⇒ Boolean
Check if a specific version exists
116 117 118 119 |
# File 'app/models/tasker/named_task.rb', line 116 def self.version_exists?(namespace_name, task_name, version) in_namespace(namespace_name) .exists?(name: task_name, version: version) end |
Instance Method Details
#concurrent? ⇒ Boolean
Get concurrency setting from configuration
75 76 77 |
# File 'app/models/tasker/named_task.rb', line 75 def concurrent? config.fetch('concurrent', true) end |
#config ⇒ Object
Configuration accessor with defaults
70 71 72 |
# File 'app/models/tasker/named_task.rb', line 70 def config @config ||= (configuration || {}).with_indifferent_access end |
#default_namespace? ⇒ Boolean
Check if this uses the default namespace
87 88 89 |
# File 'app/models/tasker/named_task.rb', line 87 def default_namespace? task_namespace.default? end |
#full_name ⇒ Object
Full qualified name: namespace.name@version
60 61 62 |
# File 'app/models/tasker/named_task.rb', line 60 def full_name "#{task_namespace.name}.#{name}@#{version}" end |
#namespace_name ⇒ Object
91 92 93 |
# File 'app/models/tasker/named_task.rb', line 91 def namespace_name task_namespace.name end |
#qualified_name ⇒ Object
Short name without version: namespace.name
65 66 67 |
# File 'app/models/tasker/named_task.rb', line 65 def qualified_name "#{task_namespace.name}.#{name}" end |
#update_config!(new_config) ⇒ Object
Update configuration
80 81 82 83 84 |
# File 'app/models/tasker/named_task.rb', line 80 def update_config!(new_config) self.configuration = (config || {}).deep_merge(new_config) save! @config = nil # Clear memoized config end |