class Hanami::Assets::Precompiler
Precompile all the assets, coming from all the applications and third party gems into the public directory of the project.
@since 0.1.0 @api private
Public Class Methods
new(configuration, duplicates)
click to toggle source
Return a new instance
@param configuration [Hanami::Assets::Configuration] the MAIN
configuration of Hanami::Assets
@param duplicates [Array<Hanami::Assets>] the duplicated frameworks
(one for each application)
@return [Hanami::Assets::Precompiler] a new instance
@since 0.1.0 @api private
# File lib/hanami/assets/precompiler.rb, line 26 def initialize(configuration, duplicates) @configuration = configuration @duplicates = duplicates end
Public Instance Methods
run()
click to toggle source
Start the process
@since 0.1.0 @api private
# File lib/hanami/assets/precompiler.rb, line 35 def run clear_assets_directory precompile end
Private Instance Methods
applications()
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/assets/precompiler.rb, line 82 def applications if @duplicates.empty? [@configuration] else @duplicates end end
clear_assets_directory()
click to toggle source
@since 0.3.0 @api private
# File lib/hanami/assets/precompiler.rb, line 44 def clear_assets_directory delete @configuration.manifest_path delete @configuration.destination_directory end
clear_manifest(manifest)
click to toggle source
@since 0.3.0 @api private
# File lib/hanami/assets/precompiler.rb, line 51 def clear_manifest(manifest) JSON.parse(manifest).each_value do |asset_hash| asset_file_name = @configuration.public_directory.join(asset_hash["target"]) asset_file_name.unlink if asset_file_name.exist? end rescue JSON::ParserError warn "Non JSON manifest found and unlinked." ensure manifest.unlink end
delete(path)
click to toggle source
@since 0.3.0 @api private
# File lib/hanami/assets/precompiler.rb, line 92 def delete(path) FileUtils.rm_rf(path) if path.exist? end
precompile()
click to toggle source
@since 0.1.0 @api private
# File lib/hanami/assets/precompiler.rb, line 64 def precompile applications.each do |duplicate| config = if duplicate.respond_to?(:configuration) duplicate.configuration else duplicate end config.compile true config.files.each do |file| Compiler.compile(config, file) end end end