enumy 0.2.0 → 0.3.0
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/lib/enumy/active_job/serializers/enum_serializer.rb +24 -0
- data/lib/enumy/active_model/type/enum.rb +28 -0
- data/lib/enumy/base.rb +5 -0
- data/lib/enumy/railtie.rb +9 -0
- data/lib/enumy/version.rb +1 -1
- data/lib/enumy.rb +13 -4
- metadata +7 -5
- data/lib/active_model/type/enum.rb +0 -26
- /data/lib/{generators → enumy/generators}/enumy/install/install_generator.rb +0 -0
- /data/lib/{generators → enumy/generators}/enumy/install/templates/app/enums/application_enum.rb +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c034d7276e26bde26c3ab1af9042e7965f60e6aaf049e30dedb0ed8d288b3e
|
4
|
+
data.tar.gz: 9aa548c28f86f7ae8f2ef0cf994ac989c705665a06212f37cd2fdd56d1228f38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90eb307fa980e73ee36f56fa64ddc98f99d2774d6e7998a80381d84ca94d308b97dc848dac41f5fc91007841374c5b039b53e581f5b5abe164ad7708556c9e30
|
7
|
+
data.tar.gz: 49b0b61bffe6f652cd92f02f7ae940c82ad7c0ee0f16a8923647b1a4a2c85f2496df10f0c13b641ce56da97e8a36523a4244949e2d24533e1a647cf2f01d14c1
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'enumy/base.rb'
|
2
|
+
|
3
|
+
module Enumy
|
4
|
+
module ActiveJob
|
5
|
+
module Serializers
|
6
|
+
class EnumSerializer < ::ActiveJob::Serializers::ObjectSerializer
|
7
|
+
|
8
|
+
def serialize(enum)
|
9
|
+
super({ class: enum.class.name, key: enum.key })
|
10
|
+
end
|
11
|
+
|
12
|
+
def deserialize(hash)
|
13
|
+
hash['class'].constantize.find(hash['key'])
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def klass
|
19
|
+
Enumy::Base
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Enumy
|
2
|
+
module ActiveModel
|
3
|
+
module Type
|
4
|
+
class Enum < ::ActiveModel::Type::Value
|
5
|
+
def initialize(enum_class)
|
6
|
+
@enum_class = enum_class
|
7
|
+
super()
|
8
|
+
end
|
9
|
+
|
10
|
+
def cast(value)
|
11
|
+
value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
|
12
|
+
end
|
13
|
+
|
14
|
+
def serialize(value)
|
15
|
+
value.is_a?(@enum_class) ? value.key : value&.to_s
|
16
|
+
end
|
17
|
+
|
18
|
+
def deserialize(value)
|
19
|
+
value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
|
20
|
+
end
|
21
|
+
|
22
|
+
def type
|
23
|
+
:enum
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/enumy/base.rb
CHANGED
@@ -18,6 +18,10 @@ module Enumy
|
|
18
18
|
I18n.t("#{self.class.i18n_scope}.attributes.models.#{self.class.model_name.i18n_key}/#{self.key}.#{attribute}")
|
19
19
|
end
|
20
20
|
|
21
|
+
def name
|
22
|
+
self.key.to_s
|
23
|
+
end
|
24
|
+
|
21
25
|
def to_s
|
22
26
|
self.key.to_s
|
23
27
|
end
|
@@ -45,6 +49,7 @@ module Enumy
|
|
45
49
|
end
|
46
50
|
|
47
51
|
def find_by_key(key)
|
52
|
+
key = key.to_sym if key.is_a?(String)
|
48
53
|
instances[key]
|
49
54
|
end
|
50
55
|
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'enumy/active_job/serializers/enum_serializer'
|
2
|
+
|
3
|
+
module Enumy
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
initializer "enumy.register_active_job_serializer" do |app|
|
6
|
+
app.config.active_job.custom_serializers << Enumy::ActiveJob::Serializers::EnumSerializer
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
data/lib/enumy/version.rb
CHANGED
data/lib/enumy.rb
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
-
|
2
|
-
require 'enumy/
|
3
|
-
|
4
|
-
|
1
|
+
if defined?(ActiveModel)
|
2
|
+
require 'enumy/base'
|
3
|
+
end
|
4
|
+
|
5
|
+
if defined?(Rails)
|
6
|
+
require 'enumy/generators/enumy/install/install_generator'
|
7
|
+
require 'enumy/active_model/type/enum'
|
8
|
+
require 'enumy/model'
|
9
|
+
|
10
|
+
if defined?(Rails::Railtie)
|
11
|
+
require 'enumy/railtie'
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bevan Holborn
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-03-
|
10
|
+
date: 2025-03-26 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: rake
|
@@ -42,14 +42,16 @@ executables: []
|
|
42
42
|
extensions: []
|
43
43
|
extra_rdoc_files: []
|
44
44
|
files:
|
45
|
-
- lib/active_model/type/enum.rb
|
46
45
|
- lib/enumy.rb
|
46
|
+
- lib/enumy/active_job/serializers/enum_serializer.rb
|
47
|
+
- lib/enumy/active_model/type/enum.rb
|
47
48
|
- lib/enumy/base.rb
|
48
49
|
- lib/enumy/errors.rb
|
50
|
+
- lib/enumy/generators/enumy/install/install_generator.rb
|
51
|
+
- lib/enumy/generators/enumy/install/templates/app/enums/application_enum.rb
|
49
52
|
- lib/enumy/model.rb
|
53
|
+
- lib/enumy/railtie.rb
|
50
54
|
- lib/enumy/version.rb
|
51
|
-
- lib/generators/enumy/install/install_generator.rb
|
52
|
-
- lib/generators/enumy/install/templates/app/enums/application_enum.rb
|
53
55
|
homepage: https://rubygems.org/gems/enumy
|
54
56
|
licenses:
|
55
57
|
- MIT
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module ActiveModel
|
2
|
-
module Type
|
3
|
-
class Enum < ActiveModel::Type::Value
|
4
|
-
def initialize(enum_class)
|
5
|
-
@enum_class = enum_class
|
6
|
-
super()
|
7
|
-
end
|
8
|
-
|
9
|
-
def cast(value)
|
10
|
-
value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
|
11
|
-
end
|
12
|
-
|
13
|
-
def serialize(value)
|
14
|
-
value.is_a?(@enum_class) ? value.key : value&.to_s
|
15
|
-
end
|
16
|
-
|
17
|
-
def deserialize(value)
|
18
|
-
value.is_a?(@enum_class) ? value : @enum_class.find_by_key(value&.to_sym)
|
19
|
-
end
|
20
|
-
|
21
|
-
def type
|
22
|
-
:enum
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
File without changes
|
/data/lib/{generators → enumy/generators}/enumy/install/templates/app/enums/application_enum.rb
RENAMED
File without changes
|