ca-data_store-ar 0.1.2 → 0.1.5
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/.release_history.yml +6 -0
- data/Gemfile.lock +16 -18
- data/lib/ca/data_store/ar/domain_config_registrar.rb +20 -30
- data/lib/ca/data_store/ar/model_base.rb +7 -1
- data/lib/ca/data_store/ar/version.rb +1 -1
- data/lib/ca/data_store/ar.rb +23 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96b72413fe17fd59be9e12cbbfc78bc60ba6c045d3a64a3e6b49473241299369
|
4
|
+
data.tar.gz: 34162704c41248c6229e0dcf633dd4a9be1d81f3b85c5e877f891e4c0b77f09e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52eba9ca7040ab4914c428533ae624687b9f8b30242b78e4eea07b761c21e2b275e14a519f747fa40ed95c166a9c984393aa523c5c316180ce01afec1a2cc65f
|
7
|
+
data.tar.gz: 9556b9ca0cc92954118ca79dfb1e19145553789370752cd95507b7d9346ab4dc025517c595176384d4a7a14e723a53c24426a4f5515f016e632001a4b5de37e3
|
data/.release_history.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ca-data_store-ar (0.1.
|
4
|
+
ca-data_store-ar (0.1.4)
|
5
5
|
activerecord
|
6
6
|
activesupport
|
7
7
|
ca-data_store
|
@@ -38,12 +38,12 @@ GEM
|
|
38
38
|
tzinfo (~> 2.0)
|
39
39
|
base58 (0.2.3)
|
40
40
|
builder (3.2.4)
|
41
|
-
ca-data_store (0.1.
|
41
|
+
ca-data_store (0.1.1)
|
42
42
|
teLogger
|
43
43
|
toolrack
|
44
44
|
concurrent-ruby (1.1.10)
|
45
45
|
crass (1.0.6)
|
46
|
-
devops_assist (0.3.
|
46
|
+
devops_assist (0.3.1)
|
47
47
|
git_cli
|
48
48
|
git_cli_prompt
|
49
49
|
gvcs
|
@@ -91,30 +91,28 @@ GEM
|
|
91
91
|
thor (~> 1.0)
|
92
92
|
zeitwerk (~> 2.5)
|
93
93
|
rake (13.0.6)
|
94
|
-
rspec (3.
|
95
|
-
rspec-core (~> 3.
|
96
|
-
rspec-expectations (~> 3.
|
97
|
-
rspec-mocks (~> 3.
|
98
|
-
rspec-core (3.
|
99
|
-
rspec-support (~> 3.
|
100
|
-
rspec-expectations (3.
|
94
|
+
rspec (3.12.0)
|
95
|
+
rspec-core (~> 3.12.0)
|
96
|
+
rspec-expectations (~> 3.12.0)
|
97
|
+
rspec-mocks (~> 3.12.0)
|
98
|
+
rspec-core (3.12.0)
|
99
|
+
rspec-support (~> 3.12.0)
|
100
|
+
rspec-expectations (3.12.0)
|
101
101
|
diff-lcs (>= 1.2.0, < 2.0)
|
102
|
-
rspec-support (~> 3.
|
103
|
-
rspec-mocks (3.
|
102
|
+
rspec-support (~> 3.12.0)
|
103
|
+
rspec-mocks (3.12.0)
|
104
104
|
diff-lcs (>= 1.2.0, < 2.0)
|
105
|
-
rspec-support (~> 3.
|
106
|
-
rspec-support (3.
|
107
|
-
sqlite3 (1.
|
105
|
+
rspec-support (~> 3.12.0)
|
106
|
+
rspec-support (3.12.0)
|
107
|
+
sqlite3 (1.5.3-x86_64-linux)
|
108
108
|
standalone_migrations (7.1.0)
|
109
109
|
activerecord (>= 4.2.7, < 7.1.0, != 5.2.3.rc1, != 5.2.3)
|
110
110
|
railties (>= 4.2.7, < 7.1.0, != 5.2.3.rc1, != 5.2.3)
|
111
111
|
rake (>= 10.0)
|
112
112
|
teLogger (0.2.0)
|
113
113
|
thor (1.2.1)
|
114
|
-
|
115
|
-
toolrack (0.18.6)
|
114
|
+
toolrack (0.19.1)
|
116
115
|
base58
|
117
|
-
tlogger
|
118
116
|
tty-color (0.6.0)
|
119
117
|
tty-cursor (0.7.1)
|
120
118
|
tty-prompt (0.23.1)
|
@@ -8,11 +8,16 @@ module Ca
|
|
8
8
|
class DomainConfigRegistrar
|
9
9
|
include TR::CondUtils
|
10
10
|
|
11
|
+
include TeLogger::TeLogHelper
|
12
|
+
teLogger_tag :DomConfReg
|
13
|
+
|
11
14
|
CONFIG_FILE_NAME = "cads_ar_domain_config.yml"
|
15
|
+
CONFIG_FOLDER = ".cads_ar"
|
16
|
+
ENV_KEY = "CADS_AR_DCR_PATH".freeze
|
12
17
|
|
13
18
|
def self.load_registrar
|
14
19
|
path = registrar_storage_path
|
15
|
-
|
20
|
+
teLogger.debug "Load DCR from : #{path}"
|
16
21
|
res = {}
|
17
22
|
if File.exist?(path)
|
18
23
|
File.open(path, "r") do |f|
|
@@ -26,21 +31,12 @@ module Ca
|
|
26
31
|
def self.registrar_storage_path
|
27
32
|
# allow caller to overwrite where to store via the env variable
|
28
33
|
# CADS_AR_DCR_PATH
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
def self.logger
|
35
|
-
if @logger.nil?
|
36
|
-
@logger = TeLogger::Tlogger.new
|
37
|
-
@logger.tag = :DCR
|
34
|
+
if @storePath.nil?
|
35
|
+
val = ENV.fetch(ENV_KEY) { File.join(Dir.home, CONFIG_FOLDER) }
|
36
|
+
FileUtils.mkdir_p(val) if not File.exist?(val)
|
37
|
+
@storePath = File.join(val, CONFIG_FILE_NAME)
|
38
38
|
end
|
39
|
-
@
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.env_key
|
43
|
-
"CADS_AR_DCR_PATH".freeze
|
39
|
+
@storePath
|
44
40
|
end
|
45
41
|
|
46
42
|
def initialize(rec = { })
|
@@ -51,11 +47,14 @@ module Ca
|
|
51
47
|
end
|
52
48
|
|
53
49
|
def register_domain(domain, path_to_config)
|
54
|
-
|
55
|
-
|
50
|
+
if not_empty?(domain) and not_empty?(path_to_config)
|
51
|
+
# path-to-config is expected to be the typical database.yml
|
52
|
+
registrar[domain] = path_to_config
|
53
|
+
end
|
54
|
+
end
|
56
55
|
|
57
|
-
|
58
|
-
registrar
|
56
|
+
def deregister_domain(domain)
|
57
|
+
registrar.delete(domain) if not_empty?(domain)
|
59
58
|
end
|
60
59
|
|
61
60
|
def is_domain_registered?(domain)
|
@@ -63,17 +62,12 @@ module Ca
|
|
63
62
|
end
|
64
63
|
|
65
64
|
def domain_config_path(domain)
|
66
|
-
|
67
|
-
if is_empty?(v)
|
68
|
-
"./config/database.yml"
|
69
|
-
else
|
70
|
-
v
|
71
|
-
end
|
65
|
+
registrar.fetch(domain) { "./config/database.yml" }
|
72
66
|
end
|
73
67
|
|
74
68
|
def save
|
75
69
|
path = self.class.registrar_storage_path
|
76
|
-
|
70
|
+
teLogger.debug "Store DCR to : #{path}"
|
77
71
|
File.open(path,"w") do |f|
|
78
72
|
f.write YAML.dump(registrar)
|
79
73
|
end
|
@@ -86,10 +80,6 @@ module Ca
|
|
86
80
|
@reg
|
87
81
|
end
|
88
82
|
|
89
|
-
def logger
|
90
|
-
self.class.logger
|
91
|
-
end
|
92
|
-
|
93
83
|
end # DomainConfigRegistrar
|
94
84
|
|
95
85
|
end
|
@@ -10,7 +10,13 @@ module Ca
|
|
10
10
|
# which in Ruby is totally up to developer
|
11
11
|
#
|
12
12
|
class Model < ActiveRecord::Base
|
13
|
-
|
13
|
+
#p defined?(Rails)
|
14
|
+
# remark this will tame rails in production mode
|
15
|
+
# BUT error when accessing model derive from here
|
16
|
+
# Leaving it here is ok in dev mode
|
17
|
+
#if not defined?(Rails)
|
18
|
+
primary_abstract_class
|
19
|
+
#end
|
14
20
|
end
|
15
21
|
|
16
22
|
end
|
data/lib/ca/data_store/ar.rb
CHANGED
@@ -48,7 +48,14 @@ module Ca
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def Ar.register_domain(domain, path, &block)
|
51
|
-
|
51
|
+
if not is_domain_registered?(domain)
|
52
|
+
domain_config.register_domain(domain, path)
|
53
|
+
domain_config.save
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def Ar.update_registered_domain(domain, path, &block)
|
58
|
+
domain_config.register_domain(domain, path)
|
52
59
|
domain_config.save
|
53
60
|
end
|
54
61
|
|
@@ -72,14 +79,22 @@ module Ca
|
|
72
79
|
File.open(dbConfig,"r") do |f|
|
73
80
|
@conf = YAML.load(f.read)
|
74
81
|
end
|
75
|
-
|
76
|
-
if block
|
77
|
-
env = block.call(:env)
|
78
|
-
end
|
79
|
-
env = "development" if is_empty?(env)
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
+
if @conf.is_a?(Hash)
|
84
|
+
|
85
|
+
if block
|
86
|
+
env = block.call(:env)
|
87
|
+
end
|
88
|
+
env = "development" if is_empty?(env)
|
89
|
+
|
90
|
+
# this assumed the content of the config file is like Rails style
|
91
|
+
teLogger.debug "db env : #{env} / #{@conf[env.to_s]}"
|
92
|
+
ActiveRecord::Base.establish_connection(@conf[env.to_s])
|
93
|
+
|
94
|
+
else
|
95
|
+
teLogger.debug "Config: #{@conf}"
|
96
|
+
ActiveRecord::Base.establish_connection(@conf)
|
97
|
+
end
|
83
98
|
|
84
99
|
else
|
85
100
|
teLogger.warn "Skipped ActiveRecord connection since config file not available at '#{path}'"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ca-data_store-ar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: teLogger
|