alba-inertia 0.1.0 → 0.1.1

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: 249d46c95a7a834638b3a75adfa694fc073dbd8df7dec61c810b7c94f5c667c0
4
- data.tar.gz: a20aee6a7c1ecda7a3b16bf020fec41f77c55d5d085ec71141431bbb7e1eace5
3
+ metadata.gz: df5684ee0729c9f364ed20123d54801b86444a5e9744faad8440a72e6c687954
4
+ data.tar.gz: 9b5e4cacf37baec365aeb8b3ab4a1f34414e8ac2cec9ef44c73d9602b314431f
5
5
  SHA512:
6
- metadata.gz: f2f3d7b2c1a04456bb9421dda758f70e8e06de0f38fa7f0db8a6f0ed52861d63deeb20c611351e38964133d22b3292b0d9a3f555ae543768244e5d250a43487e
7
- data.tar.gz: 692f121c110342f99fa059f3ea4aeb2d2b4b18bffe8e12a3519ad28078ec25ee2a840b79eb37adde59e29b82d8026a0bb4707615181b56e034bdae2af432dd1f
6
+ metadata.gz: 32a3a5cf0efa9191ec64930aa9ec6911667a49effa8a22fc3f824ad6385dfadf4a31a6be6c836498b5f27fa6828b1f2e8d484517ef80c3917728c0376676eefe
7
+ data.tar.gz: e36f3677490020bdce6e55e0616ea5fa45aa3e1ba10f377b7db8732eaf62312e49117b18bf9fe21bf08949d1a605934e3019e928d15f6355bb1230c14175e4a3
data/CHANGELOG.md CHANGED
@@ -7,14 +7,28 @@ and this project adheres to [Semantic Versioning].
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.1] - 2025-11-05
11
+
12
+ ### Added
13
+
14
+ - Add `on_missing_serializer` configuration option to control behavior when serializer/resource classes are not found. ([@skryukov])
15
+ Options: `:ignore` (default), `:log`, `:raise`, or a custom callable (proc/lambda)
16
+
17
+ ### Fixed
18
+
19
+ - Namespaced controller serializers discovery (`Foo::BarController#baz` => `Foo::BarBazResource`/`Foo::BarBazSerializer`). ([@skryukov])
20
+
10
21
  ## [0.1.0] - 2025-11-04
11
22
 
23
+ ### Added
24
+
12
25
  - Initial release ([@skryukov])
13
26
 
14
27
  [@skryukov]: https://github.com/skryukov
15
28
 
16
- [Unreleased]: https://github.com/skryukov/typelizer/compare/v0.1.0...HEAD
17
- [0.1.0]: https://github.com/skryukov/typelizer/commits/v0.1.0
29
+ [Unreleased]: https://github.com/skryukov/alba-inertia/compare/v0.1.0...HEAD
30
+ [0.1.1]: https://github.com/skryukov/alba-inertia/compare/v0.1.0...v0.1.1
31
+ [0.1.0]: https://github.com/skryukov/alba-inertia/commits/v0.1.0
18
32
 
19
33
  [Keep a Changelog]: https://keepachangelog.com/en/1.0.0/
20
34
  [Semantic Versioning]: https://semver.org/spec/v2.0.0.html
@@ -9,9 +9,19 @@ module Alba
9
9
  # Wrap all props in lambdas by default
10
10
  attr_accessor :lazy_by_default
11
11
 
12
+ # How to handle missing serializer/resource classes
13
+ # Options: :ignore, :log, :raise, or a callable (proc/lambda)
14
+ attr_accessor :on_missing_serializer
15
+
16
+ # Logger to use when on_missing_serializer is set to :log
17
+ # Defaults to Rails.logger if available
18
+ attr_accessor :logger
19
+
12
20
  def initialize
13
21
  @default_render = true
14
22
  @lazy_by_default = true
23
+ @on_missing_serializer = :ignore
24
+ @logger = defined?(Rails) ? Rails.logger : Logger.new($stdout)
15
25
  end
16
26
  end
17
27
  end
@@ -17,8 +17,29 @@ module Alba
17
17
  end
18
18
 
19
19
  def inertia_serializer_class
20
- class_name = "#{controller_name}_#{action_name}_resource".classify
21
- class_name.safe_constantize || class_name.gsub(/Resource$/, "Serializer").safe_constantize
20
+ namespace = self.class.name.deconstantize
21
+ base_name = "#{controller_name}_#{action_name}_resource".classify
22
+ class_name = namespace.present? ? "#{namespace}::#{base_name}" : base_name
23
+ serializer = class_name.safe_constantize || class_name.gsub(/Resource$/, "Serializer").safe_constantize
24
+
25
+ handle_missing_serializer(class_name) if serializer.nil?
26
+
27
+ serializer
28
+ end
29
+
30
+ def handle_missing_serializer(class_name)
31
+ handler = Alba::Inertia.config.on_missing_serializer
32
+ alternative_name = class_name.gsub(/Resource$/, "Serializer")
33
+ message = "Serializer/Resource class not found: #{class_name} or #{alternative_name}"
34
+
35
+ case handler
36
+ when :raise
37
+ raise NameError, message
38
+ when :log
39
+ Alba::Inertia.config.logger.warn(message)
40
+ when Proc
41
+ handler.call(class_name, alternative_name)
42
+ end
22
43
  end
23
44
  end
24
45
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Alba
4
4
  module Inertia
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.1"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alba-inertia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svyatoslav Kryukov