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 +4 -4
- data/CHANGELOG.md +16 -2
- data/lib/alba/inertia/configuration.rb +10 -0
- data/lib/alba/inertia/controller.rb +23 -2
- data/lib/alba/inertia/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: df5684ee0729c9f364ed20123d54801b86444a5e9744faad8440a72e6c687954
|
|
4
|
+
data.tar.gz: 9b5e4cacf37baec365aeb8b3ab4a1f34414e8ac2cec9ef44c73d9602b314431f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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/
|
|
17
|
-
[0.1.
|
|
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
|
-
|
|
21
|
-
|
|
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
|
data/lib/alba/inertia/version.rb
CHANGED