module AssetPages::Jekyll::LiquidHelper::InstanceMethods
Public Instance Methods
compute_asset_path(path, options = {})
click to toggle source
Calls superclass method
# File lib/asset_pages/jekyll/liquid_helper.rb, line 54 def compute_asset_path(path, options = {}) asset = lookup_asset_for_path(path, options) if asset if debug_assets && options[:debug] != false asset.to_a.each do |subasset| write_static_asset({}.tap { |h| subasset.encode_with(h) }.tap { |h| h["source"] ||= subasset.source }) end else write_static_asset({}.tap { |h| asset.encode_with(h) }.tap { |h| h["source"] ||= asset.source }) end elsif !assets_environment asset_filename = assets_manifest.assets[path] write_static_asset({"filename" => asset_filename}) \ if asset_filename end # Use relative paths, since the filesystem might be used to serve up pages. super(path, options) end
Protected Instance Methods
page_dir()
click to toggle source
# File lib/asset_pages/jekyll/liquid_helper.rb, line 82 def page_dir Pathname.new(@context.registers[:page]["dir"]) end
site()
click to toggle source
# File lib/asset_pages/jekyll/liquid_helper.rb, line 78 def site @context.registers[:site] end
Private Instance Methods
write_static_asset(asset_hash)
click to toggle source
# File lib/asset_pages/jekyll/liquid_helper.rb, line 88 def write_static_asset(asset_hash) assets_dir = Pathname.new(assets_prefix).relative_path_from(Root) if !asset_hash["filename"] staging_dir = ::Rails.application.root + "tmp/cache/_#{::Rails.env}" site_file_relative = assets_dir + asset_hash["logical_path"] site_file = staging_dir + site_file_relative parent_dir = site_file.parent parent_dir.mkpath \ if !parent_dir.directory? # Write the asset into the staging directory. site_file.open("wb") { |f| f.write(asset_hash["source"]) } \ if !site_file.file? \ || site_file.mtime < Time.at(asset_hash["mtime"]) \ || (asset_hash["dependency_paths"] || []).find { |dep| site_file.mtime < dep["mtime"] } else staging_dir = Root.relative_path_from(Pathname.new(assets_prefix)).expand_path(assets_manifest.dir) site_file_relative = assets_dir + asset_hash["filename"] end # Add to Jekyll's static file manifest, which ensures that said asset is moved into place. site.static_files \ .push(::Jekyll::StaticFile.new(site, staging_dir, site_file_relative.dirname, site_file_relative.basename)) \ .uniq! end