tp_common 0.2.1 → 0.2.2
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/.gitignore +1 -0
- data/gemfiles/rails_4.gemfile.lock +2 -2
- data/gemfiles/rails_5.gemfile.lock +2 -2
- data/lib/tp_common/assets_loader.rb +92 -0
- data/lib/tp_common/version.rb +1 -1
- data/lib/tp_common.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e220ac3f4edbe18ef730546eae1101798b4077c9a99919f56914efdc5791632
|
4
|
+
data.tar.gz: 1946d2c05f1c3bb9f59321f65ce8d2e6c5e9c128b7400f74082cfcf38ede5c74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9fbc13d47a5660448dd162a0f8835cadc05b985876b7a8ee0174c27fb987042a8a20d596e255cb158235d885c0b4e35f5a8a1336a1ca1a1c1db90aee094564d
|
7
|
+
data.tar.gz: 600a8864bcd467f1a604d5c4852829536ad35cffe5675900ac357a7981e29fb6265e5fdcb74b9fa56cb4cc89dab44999d4215e231a4a08660b6ad505a36463f6
|
data/.gitignore
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
module TpCommon
|
2
|
+
class AssetsLoader
|
3
|
+
class AssetNotFound < ::StandardError; end
|
4
|
+
class ManifestNotFound < ::StandardError; end
|
5
|
+
class ManifestFileBroken < ::StandardError; end
|
6
|
+
class PackageIsNotLoaded < ::StandardError; end
|
7
|
+
|
8
|
+
LoaderConfiguration = Struct.new(:autoload, :asset_root_path, :version)
|
9
|
+
|
10
|
+
#
|
11
|
+
# Clear all config + loaded package
|
12
|
+
# Use for test only, but feel free to use in app if need
|
13
|
+
def self.clear!
|
14
|
+
@config = LoaderConfiguration.new(false, '/public', :latest)
|
15
|
+
@packages = {}
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configure
|
19
|
+
yield(config)
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.build(package_name, external_manifest_file)
|
23
|
+
# TODO: Implement
|
24
|
+
# Skip if "/public/#{package_name}" exists
|
25
|
+
# Download manifest.json from #{external_manifest_file}?version=#{@config.version}
|
26
|
+
# to "/public/#{package_name}/assets/manifest.json"
|
27
|
+
# Validate "/public/#{package_name}/assets/manifest.json"
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.load(package_name)
|
31
|
+
package_name = package_name.to_sym
|
32
|
+
packages[package_name] = new(package_name)
|
33
|
+
packages
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.[](package_name)
|
37
|
+
package_name = package_name.to_sym
|
38
|
+
|
39
|
+
unless packages.key?(package_name)
|
40
|
+
if @config.autoload
|
41
|
+
load(package_name)
|
42
|
+
else
|
43
|
+
raise PackageIsNotLoaded.new("Package #{package_name} is not loaded yet.")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
packages[package_name]
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.asset_root_path
|
51
|
+
@config.asset_root_path
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.packages
|
55
|
+
@packages ||= {}
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.new_config
|
59
|
+
LoaderConfiguration.new(false, '/public', :latest)
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.config
|
63
|
+
@config ||= new_config
|
64
|
+
end
|
65
|
+
|
66
|
+
private_class_method :packages, :new_config, :config
|
67
|
+
|
68
|
+
def initialize(package_name)
|
69
|
+
@package_name = package_name.to_sym
|
70
|
+
file_path = File.join(self.class.asset_root_path, @package_name.to_s, 'assets', 'manifest.json')
|
71
|
+
|
72
|
+
@manifest = begin
|
73
|
+
JSON.parse(File.read(file_path))
|
74
|
+
rescue SystemCallError
|
75
|
+
raise ManifestNotFound.new(
|
76
|
+
"Unable to load manifest file for package #{@package_name} at: #{file_path}"
|
77
|
+
)
|
78
|
+
rescue StandardError
|
79
|
+
raise ManifestFileBroken.new("Manifest file for package #{@package_name} is unable to load")
|
80
|
+
end
|
81
|
+
return true
|
82
|
+
end
|
83
|
+
|
84
|
+
def [](asset_name)
|
85
|
+
@manifest[asset_name].tap do |asset|
|
86
|
+
if asset.nil?
|
87
|
+
raise AssetNotFound.new("Asset #{@package_name}/#{asset_name} is not found.")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/tp_common/version.rb
CHANGED
data/lib/tp_common.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tp_common
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TINYpulse Devops
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -166,6 +166,7 @@ files:
|
|
166
166
|
- gemfiles/rails_5.gemfile
|
167
167
|
- gemfiles/rails_5.gemfile.lock
|
168
168
|
- lib/tp_common.rb
|
169
|
+
- lib/tp_common/assets_loader.rb
|
169
170
|
- lib/tp_common/railtie.rb
|
170
171
|
- lib/tp_common/timezones.rb
|
171
172
|
- lib/tp_common/timezones/config.rb
|
@@ -194,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
195
|
version: '0'
|
195
196
|
requirements: []
|
196
197
|
rubyforge_project:
|
197
|
-
rubygems_version: 2.7.
|
198
|
+
rubygems_version: 2.7.7
|
198
199
|
signing_key:
|
199
200
|
specification_version: 4
|
200
201
|
summary: Common libraries used for TINYpulse apps
|