Class: JAPR::Pipeline
- Inherits:
-
Object
- Object
- JAPR::Pipeline
- Defined in:
- lib/japr/pipeline.rb
Overview
rubocop:disable ClassLength
Instance Attribute Summary collapse
-
#assets ⇒ Object
readonly
Returns the value of attribute assets.
-
#destination ⇒ Object
readonly
Returns the value of attribute destination.
-
#html ⇒ Object
readonly
Returns the value of attribute html.
Class Method Summary collapse
-
.cache ⇒ Object
Cache processed pipelines.
-
.clear_cache ⇒ Object
Empty cache.
-
.hash(source, manifest, options = {}) ⇒ Object
Generate hash based on manifest.
-
.puts(message) ⇒ Object
Add prefix to output.
-
.remove_staged_assets(source, config) ⇒ Object
Remove staged assets.
-
.run(manifest, prefix, source, destination, tag, type, config) ⇒ Object
Run pipeline.
Instance Method Summary collapse
-
#initialize(manifest, prefix, source, destination, type, options = {}) ⇒ Pipeline
constructor
Initialize new pipeline.
Constructor Details
#initialize(manifest, prefix, source, destination, type, options = {}) ⇒ Pipeline
Initialize new pipeline
82 83 84 85 86 87 88 89 90 91 |
# File 'lib/japr/pipeline.rb', line 82 def initialize(manifest, prefix, source, destination, type, = {}) @manifest = manifest @prefix = prefix @source = source @destination = destination @type = type @options = JAPR::DEFAULTS.merge() process end |
Instance Attribute Details
#assets ⇒ Object (readonly)
Returns the value of attribute assets.
93 94 95 |
# File 'lib/japr/pipeline.rb', line 93 def assets @assets end |
#destination ⇒ Object (readonly)
Returns the value of attribute destination.
93 94 95 |
# File 'lib/japr/pipeline.rb', line 93 def destination @destination end |
#html ⇒ Object (readonly)
Returns the value of attribute html.
93 94 95 |
# File 'lib/japr/pipeline.rb', line 93 def html @html end |
Class Method Details
.cache ⇒ Object
Cache processed pipelines
40 41 42 |
# File 'lib/japr/pipeline.rb', line 40 def cache @cache ||= {} end |
.clear_cache ⇒ Object
Empty cache
45 46 47 |
# File 'lib/japr/pipeline.rb', line 45 def clear_cache @cache = {} end |
.hash(source, manifest, options = {}) ⇒ Object
Generate hash based on manifest
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/japr/pipeline.rb', line 6 def hash(source, manifest, = {}) = DEFAULTS.merge() begin Digest::MD5.hexdigest(YAML.safe_load(manifest).map! do |path| "#{path}#{File.mtime(File.join(source, path)).to_i}" end.join.concat(.to_s)) rescue Exception => e puts "Failed to generate hash from provided manifest: #{e.}" raise e end end |
.puts(message) ⇒ Object
Add prefix to output
61 62 63 |
# File 'lib/japr/pipeline.rb', line 61 def puts() $stdout.puts("Asset Pipeline: #{}") end |
.remove_staged_assets(source, config) ⇒ Object
Remove staged assets
50 51 52 53 54 55 56 57 58 |
# File 'lib/japr/pipeline.rb', line 50 def remove_staged_assets(source, config) config = DEFAULTS.merge(config) staging_path = File.join(source, config['staging_path']) FileUtils.rm_rf(staging_path) rescue Exception => e puts "Failed to remove staged assets: #{e.}" # Re-raise the exception raise e end |
.run(manifest, prefix, source, destination, tag, type, config) ⇒ Object
Run pipeline
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/japr/pipeline.rb', line 19 def run(manifest, prefix, source, destination, tag, type, config) # Get hash for pipeline hash = hash(source, manifest, config) # Check if pipeline has been cached return cache[hash], true if cache.key?(hash) begin puts "Processing '#{tag}' manifest '#{prefix}'" pipeline = new(manifest, prefix, source, destination, type, config) process_pipeline(hash, pipeline) rescue Exception => e # Add exception to cache cache[hash] = e # Re-raise the exception raise e end end |