Last active
June 20, 2017 07:12
-
-
Save oivoodoo/6822660 to your computer and use it in GitHub Desktop.
sprockets example for the sinatra application
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require_relative 'sprockets/env_directive_processor' | |
class Assets | |
def self.get(root) | |
assets = Sprockets::Environment.new(root) | |
assets.append_path File.join(root, 'assets', 'stylesheets') | |
assets.append_path File.join(root, 'assets', 'javascripts') | |
assets.append_path File.join(root, 'assets', 'images') | |
# we are using this directive for loading development related scripts | |
assets.register_preprocessor('application/javascript', Sprockets::EnvDirectiveProcessor) | |
assets | |
end | |
end | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'json' | |
require 'yaml' | |
require 'sprockets' | |
require 'sprockets-helpers' | |
# we need to pick boot classes of our client | |
require File.expand_path('../../assets', __FILE__) | |
require File.expand_path('../../global_settings', __FILE__) | |
namespace :client_assets do | |
CLIENT_PATH = File.join(File.dirname(__FILE__), '..', '..') | |
task :precompile => :clean do | |
precompile | |
end | |
def precompile | |
log "Precompiling assets..." | |
assets = Assets.get(CLIENT_PATH) | |
manifest = Sprockets::Manifest.new(assets, GlobalSettings.assets_manifest_path) | |
Sprockets::Helpers.configure do |config| | |
config.environment = assets | |
config.digest = true | |
config.debug = false | |
config.prefix = GlobalSettings.assets_prefix | |
config.public_path = GlobalSettings.public_folder | |
config.manifest = manifest | |
end | |
assets.context_class.class_eval do | |
include Sprockets::Helpers | |
end | |
assets.css_compressor = YUI::CssCompressor.new | |
assets.js_compressor = YUI::JavaScriptCompressor.new | |
manifest.compile | |
log "Done" | |
end | |
desc "Clean assets folder" | |
task :clean do | |
log "Destroying client/public/assets..." | |
rm_rf GlobalSettings.assets_path, :secure => true | |
log "Done" | |
end | |
def log(message) | |
Rake.rake_output_message(message) | |
end | |
end | |
begin | |
Rake::Task["assets:precompile:nondigest"].enhance do | |
Rake.rake_output_message('Begin enhance assets:precompile:nondigest') | |
Rake::Task['client_assets:precompile'].invoke | |
Rake.rake_output_message('Done enhance assets:precompile:nondigest') | |
end | |
rescue => boom | |
Rake.rake_output_message(boom.message) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment