Skip to content

Instantly share code, notes, and snippets.

@leejarvis
Forked from Thermatix/assets.rb
Created August 13, 2015 10:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leejarvis/420a6dac6ccd3ff676a9 to your computer and use it in GitHub Desktop.
Save leejarvis/420a6dac6ccd3ff676a9 to your computer and use it in GitHub Desktop.
require "yui/compressor"
require "sass"
require 'sprockets'
require 'opal'
module Assets
Opal = ::Opal
Sprockets = ::Sprockets
#this is a class for file dependencies (i.e, this class relies on the class Mime_Types to be loaded, and so it will)
Registry.add self, to: :utilities, deps: [
{type: :utilities, key:'Mime_Types'}
]
class << self
attr_reader :get_asset
attr_accessor :opal_config
end
@get_asset = Proc.new { |captures|
file_name,extention = captures
content_type(Mime_Types[extention])
settings.assets["#{file_name}.#{extention}"]
}
def self.included base
base.class_exec(self) do |assets|
asset_types = nil
configure do
set :assets, Sprockets::Environment.new
settings.assets.tap do |s|
#register opal
s.register_engine '.orb', Opal::Processor
# add app root
s.append_path settings.root
assets_root = "#{settings.root}/#{settings.asset_root}"
##set up "traditional" assets
(asset_types = %w{javascripts stylesheets fonts images}).each do |asset_folder|
s.append_path "#{assets_root}/#{asset_folder}"
end
##set up opal paths
Opal.append_path "#{settings.root}/components"
Opal.paths.each {|p| s.append_path p}
#set up compressers and pre-proccessors
s.js_compressor = YUI::JavaScriptCompressor.new
s.css_compressor = YUI::CssCompressor.new
end
end
Opal::Processor.source_map_enabled = false
##add asset routes for asset_root folder
get %r{/#{settings.asset_root}/(.*)(\W.*)$} do
self.instance_exec(params[:captures],&assets.get_asset)
end
#add asset types
asset_types.each do |asset_type|
get %r{/#{settings.asset_root}/#{asset_type}/(.*)(\W.*)$} do
self.instance_exec(params[:captures],&assets.get_asset)
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment