legionio 1.8.2 → 1.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 274f2876b6e344eba4a13f69464f8d2314184ac72b421758d8fbc54b40934fa7
4
- data.tar.gz: 7fa9c97c435509b18b2f68cdc2a041f496b613a7cf163b053c5d286a2ae9870a
3
+ metadata.gz: 6ef0a94c2543733457f3694bb571fad2ba905ef575389604b98466d82e9ac833
4
+ data.tar.gz: 243ccfe2053e879ecf4119f97b5e7f76353846c7f22f85aafac472b252eac667
5
5
  SHA512:
6
- metadata.gz: 64226b609440433ddf6db4bcfaf102318e50d22ed6a117ddf113086fb85988d4df4dfecd1d162c20d5e5b1d1b5e4a69dbc8a426b5b5a05e6f9a83fb7e4add5f8
7
- data.tar.gz: 4ddd4175e2584e249e6e74e4101d6ed3ae15be7d60b3051e9025f8f8bb286e84cba73e00a1715443abd1cae216249b7328aed9daeb66ed8558282385f618dcf5
6
+ metadata.gz: a9a061f424b4eeead1ed3fa70b41b3ff8e437f39988b544473b247cc702cf481f302a8a274b181d2b6afcfa04c8adb47ec4c4238b3eecbafb110cbc5001c0c2f
7
+ data.tar.gz: 17b63bf689c452de0beaa00c094ec504bb5bdb58b2f79b2a03868b65bb16221d66014d15c98fa05082edd3639dc5e77122155bcaa7e2944afb21b64588399315
data/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.8.3] - 2026-04-14
6
+
7
+ ### Fixed
8
+ - `runner_class` resolution for actors nested under `Actor::` namespace — `sub(/Actor$/, 'Runners')` only matched `Actor` at end-of-string, failing for `Extension::Actor::ClassName` patterns (e.g., `Health::Actor::Watchdog`, `Node::Actor::Beat`). Changed to `sub(/::Actor::/, '::Runners::')` which matches the path segment. Affects 9+ actors across lex-health, lex-node, lex-tasker, lex-conditioner, lex-transformer.
9
+ - Added defensive guard in `manual` method — raises descriptive `NoMethodError` when `runner_class` resolves to the actor itself and the function is not defined, instead of a generic undefined method error.
10
+
5
11
  ## [1.8.2] - 2026-04-13
6
12
 
7
13
  ### Added
@@ -29,6 +29,11 @@ module Legion
29
29
  klass = Kernel.const_get(klass) if klass.is_a?(String)
30
30
  func = respond_to?(:runner_function) ? runner_function : :action
31
31
  if klass == self.class
32
+ unless respond_to?(func)
33
+ raise NoMethodError,
34
+ "#{self.class} resolved runner_class to itself but does not define '#{func}'. " \
35
+ 'Override runner_class or define the method on the actor.'
36
+ end
32
37
  send(func, **args)
33
38
  else
34
39
  klass.send(func, **args)
@@ -83,7 +83,7 @@ module Legion
83
83
  end
84
84
 
85
85
  def runner_class
86
- @runner_class ||= Kernel.const_get(actor_class.to_s.sub(/Actor$/, 'Runners'))
86
+ @runner_class ||= Kernel.const_get(actor_class.to_s.sub('::Actor::', '::Runners::'))
87
87
  end
88
88
 
89
89
  def runner_name
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Legion
4
- VERSION = '1.8.2'
4
+ VERSION = '1.8.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legionio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity