Sha256: 3b81a89f4604b2dd47ebcf5578d4f1f822d8a20b7a0dd55fad57a36aaaf00baa

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

require "asset_symlink/version"
require "asset_symlink/railtie"
require 'fileutils'
module AssetSymlink
  def self.execute config
    normalize_configuration(config).each do |private_name, public_name|
      asset = if !Rails.application.assets.nil?
        Rails.application.assets.find_asset(private_name).digest_path
      else
        Rails.application.assets_manifest.assets[private_name]
      end
      digested_location = Rails.root.join('public','assets', asset)
      public_location = Rails.root.join('public','assets',public_name)
      if File.dirname(public_name) != '.'
        FileUtils.mkdir_p(File.dirname(public_location))
      end
      digested_location = digested_location.relative_path_from(public_location.dirname)
      FileUtils.ln_sf(digested_location, Rails.root.join('public','assets',public_name))
    end
  end


  def self.normalize_configuration config
    case config
    when Hash 
      config
    when String
      {config => config}
    when Array 
      config.inject({}) do |result, element|
        result.merge(normalize_configuration(element))
      end
    when NilClass
      {}
    else
      raise ArgumentError, "unexpected item #{config} in config.asset_symlink"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
asset_symlink-0.2.1 lib/asset_symlink.rb
asset_symlink-0.2.0 lib/asset_symlink.rb