unidom-common 2.1.2 → 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/README.md +3 -3
- data/app/models/unidom/common/concerns/aes256_cryptor.rb +4 -1
- data/app/models/unidom/common/concerns/model_extension.rb +13 -0
- data/lib/unidom/common/engine_extension.rb +34 -28
- data/lib/unidom/common/neglection.rb +21 -16
- data/lib/unidom/common/numeration.rb +20 -15
- data/lib/unidom/common/version.rb +1 -1
- data/lib/unidom/common/yaml_helper.rb +21 -16
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c71146870a9030fc64208ac28ed4bc6f7a92530432a95ffcbb5166d13ad7527
|
4
|
+
data.tar.gz: b045e9c5680d646c078d9b6b16e1ecac57f6b4b5db15c48b37e0158919ef5141
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5dd9f8e8d2a8f5f0daf8185c3f3162a1ad6b0290c2433914a34f4198e02f7b7a522a47cb857bc9c34c3c06c5c4899bea85120fb6ca2d190bb2425d2e00f4945c
|
7
|
+
data.tar.gz: 7f4259427bbb8377258e12c630b19eec5aff6310df53201d2d56ae6b927759c200d3082b771fa1161b1b8aa684fb482b95de92c7366c45406e102780062844f6
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
[](https://gemnasium.com/github.com/topbitdu/unidom-common)
|
8
8
|
|
9
9
|
Unidom (UNIfied Domain Object Model) is a series of domain model engines. The Common domain model engine includes the common models.
|
10
|
-
Unidom
|
10
|
+
Unidom (统一领域对象模型)是一系列的领域模型引擎。常用领域模型引擎包括一些常用的模型。
|
11
11
|
|
12
12
|
|
13
13
|
|
@@ -134,7 +134,7 @@ Project.notation_boolean_column_where(:enabled, true) # All enabled projects
|
|
134
134
|
|
135
135
|
```ruby
|
136
136
|
# db/migrate/YYYYMMDDHHMMSS_create_people.rb
|
137
|
-
class CreatePeople < ActiveRecord::Migration[
|
137
|
+
class CreatePeople < ActiveRecord::Migration[6.0]
|
138
138
|
|
139
139
|
def change
|
140
140
|
|
@@ -189,7 +189,7 @@ Person.passport_number_is('E00000000').first==person # true
|
|
189
189
|
|
190
190
|
```ruby
|
191
191
|
# db/migrate/YYYYMMDDHHMMSS_create_orderings.rb
|
192
|
-
class CreateOrderings < ActiveRecord::Migration[
|
192
|
+
class CreateOrderings < ActiveRecord::Migration[6.0]
|
193
193
|
|
194
194
|
def change
|
195
195
|
|
@@ -79,7 +79,10 @@ module Unidom::Common::Concerns::Aes256Cryptor
|
|
79
79
|
cipher = OpenSSL::Cipher::AES.new(256, 'CBC')
|
80
80
|
cipher.decrypt
|
81
81
|
cipher.padding = aes_256_padding
|
82
|
-
cipher.key = key
|
82
|
+
#cipher.key = key
|
83
|
+
|
84
|
+
times = key.length/cipher.key_len>=1 ? 1 : cipher.key_len/key.length+1
|
85
|
+
cipher.key = (key*times)[0..cipher.key_len-1]
|
83
86
|
|
84
87
|
cipher.update(encoded)+cipher.final
|
85
88
|
|
@@ -140,6 +140,19 @@ module Unidom::Common::Concerns::ModelExtension
|
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
143
|
+
##
|
144
|
+
# 抽取验证错误。
|
145
|
+
def extract_errors
|
146
|
+
refined_errors = {}
|
147
|
+
self.errors.messages.each do | name, messages |
|
148
|
+
details = errors.details[name]
|
149
|
+
refined_errors[name] = []
|
150
|
+
messages.count.times { |i| refined_errors[name] << details[i].merge(message: messages[i]) }
|
151
|
+
end
|
152
|
+
refined_errors
|
153
|
+
end
|
154
|
+
|
155
|
+
|
143
156
|
end
|
144
157
|
|
145
158
|
module ClassMethods
|
@@ -1,38 +1,44 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# .enable_initializer 方法简化了知识层枚举和数据库迁移脚本的加载。
|
4
|
-
|
5
|
-
module Unidom::Common::EngineExtension
|
6
|
-
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
#included do |includer|
|
10
|
-
#end
|
11
|
-
|
12
|
-
module ClassMethods
|
1
|
+
module Unidom
|
2
|
+
module Common
|
13
3
|
|
14
4
|
##
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
5
|
+
# Engine Extension 是为 Rails 引擎提供的扩展关注点。
|
6
|
+
# .enable_initializer 方法简化了知识层枚举和数据库迁移脚本的加载。
|
7
|
+
module EngineExtension
|
8
|
+
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
#included do |includer|
|
12
|
+
#end
|
13
|
+
|
14
|
+
#module ClassMethods
|
15
|
+
class_methods do
|
16
|
+
|
17
|
+
##
|
18
|
+
# 设置初始化器的开关。如:
|
19
|
+
# Unidom::Common::EngineExtension.enable_initializer enum_enabled: true, migration_enabled: false
|
20
|
+
# enum_enabled 表明是否加载枚举型。
|
21
|
+
# migration_enabled 表明是否运行领域模型数据库迁移脚本,同时也表明加载对应的领域模型。
|
22
|
+
def enable_initializer(enum_enabled: false, migration_enabled: false)
|
23
|
+
|
24
|
+
if enum_enabled
|
25
|
+
require 'unidom/common/yaml_helper'
|
26
|
+
initializer :load_config_initializers do |app|
|
27
|
+
Unidom::Common::YamlHelper.load_enum config: app.config, root: config.root
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
if migration_enabled
|
32
|
+
initializer :append_migrations do |app|
|
33
|
+
config.paths['db/migrate'].expanded.each { |expanded_path| app.config.paths['db/migrate'] << expanded_path } unless Unidom::Common::Neglection.namespace_neglected?(self.class.name)||app.root.to_s.match(root.to_s)
|
34
|
+
end
|
35
|
+
end
|
27
36
|
|
28
|
-
if migration_enabled
|
29
|
-
initializer :append_migrations do |app|
|
30
|
-
config.paths['db/migrate'].expanded.each { |expanded_path| app.config.paths['db/migrate'] << expanded_path } unless Unidom::Common::Neglection.namespace_neglected?(self.class.name)||app.root.to_s.match(root.to_s)
|
31
37
|
end
|
38
|
+
|
32
39
|
end
|
33
40
|
|
34
41
|
end
|
35
42
|
|
36
43
|
end
|
37
|
-
|
38
44
|
end
|
@@ -1,20 +1,25 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Unidom
|
2
|
+
module Common
|
3
3
|
|
4
|
-
|
4
|
+
##
|
5
|
+
# Neglection 根据配置信息忽略指定的类或者命名空间。
|
6
|
+
class Neglection
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
##
|
9
|
+
# 判断指定的类名是否被忽略。如:
|
10
|
+
# Unidom::Common::Neglection.namespace_neglected? 'Namespace::ClassName'
|
11
|
+
# 在应用的 config/initializers/unidom.rb 文件中配置如下代码,即可忽略 Namespace::ClassName 这个类。
|
12
|
+
# Unidom::Common.configure do |options|
|
13
|
+
# # The migrations inside the following namespaces will be ignored. The models inside the following namespaces won't be defined.
|
14
|
+
# options[:neglected_namespaces] = %w{
|
15
|
+
# Namespace::ClassName
|
16
|
+
# }
|
17
|
+
def self.namespace_neglected?(class_name)
|
18
|
+
neglected_namespaces = Unidom::Common.try(:options).try(:[], :neglected_namespaces)
|
19
|
+
neglected_namespaces.present? ? neglected_namespaces.include?(class_name.to_s.deconstantize) : false
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
19
23
|
|
24
|
+
end
|
20
25
|
end
|
@@ -1,20 +1,25 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Unidom
|
2
|
+
module Common
|
3
3
|
|
4
|
-
|
4
|
+
##
|
5
|
+
# Numeration 是数字格式转换的辅助类。
|
6
|
+
class Numeration
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
##
|
9
|
+
# 将二进制数据转换成 16 进制的表达。如:
|
10
|
+
# Unidom::Common::Numeration.hex [ 'A', '}' ]
|
11
|
+
def self.hex(data)
|
12
|
+
data.present? ? data.unpack('H*')[0] : nil
|
13
|
+
end
|
12
14
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
##
|
16
|
+
# 将十六进制数的表达字符串,转换成二进制数据。如:
|
17
|
+
# Unidom::Common::Numeration.rev_hex '6CA0'
|
18
|
+
def self.rev_hex(hex)
|
19
|
+
hex.present? ? hex.scan(/../).map(&:hex).pack('c*') : nil
|
20
|
+
end
|
19
21
|
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
20
25
|
end
|
@@ -1,25 +1,30 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
module Unidom
|
2
|
+
module Common
|
3
3
|
|
4
|
-
|
4
|
+
##
|
5
|
+
# YAML Helper 是用于加载知识层枚举的配置文件的辅助模块。
|
6
|
+
module YamlHelper
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
8
|
+
##
|
9
|
+
# 从应用或者引擎的跟路径 root 加载 config/enum.yml 中的内容到 config 中。
|
10
|
+
def self.load_enum(config: nil, root: nil)
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
+
enum_yaml_path = root.join 'config', 'enum.yml'
|
13
|
+
raise ArgumentError.new "The file #{enum_yaml_path} does not exist." unless enum_yaml_path.exist?
|
14
|
+
|
15
|
+
unless config.respond_to? :enum
|
16
|
+
config.class_eval do
|
17
|
+
attr_accessor :enum
|
18
|
+
end
|
19
|
+
end
|
20
|
+
config.enum = {} if config.enum.nil?
|
21
|
+
|
22
|
+
enum_definitions = YAML.load File.read(enum_yaml_path)
|
23
|
+
config.enum.merge! enum_definitions['enum'] if enum_definitions.present?&&enum_definitions['enum'].present?
|
12
24
|
|
13
|
-
unless config.respond_to? :enum
|
14
|
-
config.class_eval do
|
15
|
-
attr_accessor :enum
|
16
25
|
end
|
17
|
-
end
|
18
|
-
config.enum = {} if config.enum.nil?
|
19
26
|
|
20
|
-
|
21
|
-
config.enum.merge! enum_definitions['enum'] if enum_definitions.present?&&enum_definitions['enum'].present?
|
27
|
+
end
|
22
28
|
|
23
29
|
end
|
24
|
-
|
25
30
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unidom-common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '3.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Topbit Du
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '7.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '7.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: pg
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,11 +124,11 @@ files:
|
|
124
124
|
- lib/unidom/common/numeration.rb
|
125
125
|
- lib/unidom/common/version.rb
|
126
126
|
- lib/unidom/common/yaml_helper.rb
|
127
|
-
homepage:
|
127
|
+
homepage: https://gitee.com/Unidom/unidom-common
|
128
128
|
licenses:
|
129
129
|
- MIT
|
130
130
|
metadata: {}
|
131
|
-
post_install_message:
|
131
|
+
post_install_message:
|
132
132
|
rdoc_options: []
|
133
133
|
require_paths:
|
134
134
|
- lib
|
@@ -143,8 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
rubygems_version: 3.
|
147
|
-
signing_key:
|
146
|
+
rubygems_version: 3.5.6
|
147
|
+
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Unidom Common Domain Model Engine 常用领域模型引擎
|
150
150
|
test_files: []
|