class TpCommon::AssetsLoader
Constants
- LoaderConfiguration
Public Class Methods
[](package_name)
click to toggle source
# File lib/tp_common/assets_loader.rb, line 36 def self.[](package_name) package_name = package_name.to_sym unless packages.key?(package_name) if @config.autoload load(package_name) else raise PackageIsNotLoaded.new("Package #{package_name} is not loaded yet.") end end packages[package_name] end
asset_root_path()
click to toggle source
# File lib/tp_common/assets_loader.rb, line 50 def self.asset_root_path @config.asset_root_path end
build(package_name, external_manifest_file)
click to toggle source
# File lib/tp_common/assets_loader.rb, line 22 def self.build(package_name, external_manifest_file) # TODO: Implement # Skip if "/public/#{package_name}" exists # Download manifest.json from #{external_manifest_file}?version=#{@config.version} # to "/public/#{package_name}/assets/manifest.json" # Validate "/public/#{package_name}/assets/manifest.json" end
clear!()
click to toggle source
Clear all config + loaded package Use for test only, but feel free to use in app if need
# File lib/tp_common/assets_loader.rb, line 13 def self.clear! @config = LoaderConfiguration.new(false, '/public', :latest) @packages = {} end
configure() { |config| ... }
click to toggle source
# File lib/tp_common/assets_loader.rb, line 18 def self.configure yield(config) end
load(package_name)
click to toggle source
# File lib/tp_common/assets_loader.rb, line 30 def self.load(package_name) package_name = package_name.to_sym packages[package_name] = new(package_name) packages end
new(package_name)
click to toggle source
# File lib/tp_common/assets_loader.rb, line 68 def initialize(package_name) @package_name = package_name.to_sym file_path = File.join(self.class.asset_root_path, @package_name.to_s, 'assets', 'manifest.json') @manifest = begin JSON.parse(File.read(file_path)) rescue SystemCallError raise ManifestNotFound.new( "Unable to load manifest file for package #{@package_name} at: #{file_path}" ) rescue StandardError raise ManifestFileBroken.new("Manifest file for package #{@package_name} is unable to load") end return true end
Private Class Methods
config()
click to toggle source
# File lib/tp_common/assets_loader.rb, line 62 def self.config @config ||= new_config end
new_config()
click to toggle source
# File lib/tp_common/assets_loader.rb, line 58 def self.new_config LoaderConfiguration.new(false, '/public', :latest) end
packages()
click to toggle source
# File lib/tp_common/assets_loader.rb, line 54 def self.packages @packages ||= {} end
Public Instance Methods
[](asset_name)
click to toggle source
# File lib/tp_common/assets_loader.rb, line 84 def [](asset_name) @manifest[asset_name].tap do |asset| if asset.nil? raise AssetNotFound.new("Asset #{@package_name}/#{asset_name} is not found.") end end end