class Jekyll::Assets::Env
Attributes
asset_config[R]
assets_to_write[RW]
jekyll[R]
manifest[R]
–
Public Class Methods
new(jekyll = nil)
click to toggle source
–
Calls superclass method
# File lib/jekyll/assets/env.rb, line 39 def initialize(jekyll = nil) @asset_config = Config.new(jekyll.config["assets"] ||= {}) Hook.trigger :env, :before_init do |h| instance_eval(&h) end super() @jekyll = jekyll @assets_to_write = [] @manifest = Manifest.new(self, in_dest_dir) @jekyll.sprockets = self @total_time = 0.000000 @logger = Logger @cache = nil setup_sources! setup_resolver! ignore_caches! setup_drops! precompile! copy_raw! Hook.trigger :env, :after_init do |h| instance_eval(&h) end end
Public Instance Methods
cache()
click to toggle source
– @note this is configurable with :caching -> :type Create a cache, or a null cache (if no caching) for caching. @note this is configurable with :caching -> :enabled @return [Sprockets::Cache] –
# File lib/jekyll/assets/env.rb, line 101 def cache @cache ||= begin type = asset_config[:caching][:type] enbl = asset_config[:caching][:enabled] path = in_cache_dir out = Sprockets::Cache::MemoryStore.new if enbl && type == "memory" out = Sprockets::Cache::FileStore.new(path) if enbl && type == "file" out = Sprockets::Cache::NullStore.new unless enbl out = Sprockets::Cache.new(out, Logger) clear_cache(out) out end end
find_asset(v, *a)
click to toggle source
–
Calls superclass method
# File lib/jekyll/assets/env.rb, line 72 def find_asset(v, *a) msg = "Searched for, and rendered #{v} in %<time>s" out = Logger.with_timed_logging msg do super(v, *a) end # We keep track. @total_time += out[:time] out[:result] end
find_asset!(v, *a)
click to toggle source
–
Calls superclass method
Sprockets::Environment#find_asset!
# File lib/jekyll/assets/env.rb, line 84 def find_asset!(v, *a) msg = "Searched for, and rendered #{v} in %<time>s" out = Logger.with_timed_logging msg do super(v, *a) end # We keep track. @total_time += out[:time] out[:result] end
remove_old_assets()
click to toggle source
# File lib/jekyll/assets/env.rb, line 150 def remove_old_assets assets_to_write.each do |v| in_dest_dir(find_asset!(v).logical_path).rm_f end end
skip_gzip?()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 67 def skip_gzip? !asset_config[:gzip] end
to_liquid_payload()
click to toggle source
– @note this does not find the asset. Takes all user assets and turns them into a drop. @return [Hash] –
# File lib/jekyll/assets/env.rb, line 121 def to_liquid_payload each_file.each_with_object({}) do |k, h| skip, path = false, Pathutil.new(strip_paths(k)) path.descend do |p| skip = p.start_with?("_") if skip break end end next if skip h.update({ path.to_s => Drop.new(path, { jekyll: jekyll, }), }) end end
write_all()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 141 def write_all remove_old_assets unless asset_config[:digest] manifest.compile(*assets_to_write); @asset_to_write = [] Hook.trigger(:env, :after_write) { |h| instance_eval(&h) } Logger.debug "took #{format(@total_time.round(2).to_s, '%.2f')}s" end
Private Instance Methods
clear_cache(cache)
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 158 def clear_cache(cache) if @manifest.new_manifest? && cache && cache.respond_to?(:clear) cache.clear end rescue Errno::ENOENT nil end
copy_raw!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 175 def copy_raw! raw_precompiles.each do |v| v[:dst].mkdir_p if v[:dst].extname.empty? v[:dst].parent.mkdir_p unless v[:dst].extname.empty? v[:src].cp(v[:dst]) end end
create_resolver!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 205 def create_resolver! register_dependency_resolver "jekyll-env" do ENV["JEKYLL_ENV"] end end
ignore_caches!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 168 def ignore_caches! jekyll.config["exclude"] ||= [] jekyll.config["exclude"].push(asset_config[:caching][:path]) jekyll.config["exclude"].uniq! end
precompile!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 185 def precompile! assets = asset_config[:precompile] assets.map do |v| v !~ %r!\*! ? @assets_to_write |= [v] : glob_paths(v).each do |sv| @assets_to_write |= [sv] end end nil end
setup_drops!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 228 def setup_drops! Jekyll::Hooks.register :site, :pre_render do |_, h| h["assets"] = to_liquid_payload end end
setup_resolver!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 198 def setup_resolver! create_resolver! depend_on "jekyll-env" end
setup_sources!()
click to toggle source
–
# File lib/jekyll/assets/env.rb, line 213 def setup_sources! source_dir, cwd = Pathutil.new(jekyll.in_source_dir), Pathutil.cwd asset_config["sources"].each do |v| path = source_dir.join(v).expand_path next unless path.in_path?(cwd) unless paths.include?(path) append_path path end end paths end