tp_common 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|