Skip to content

Instantly share code, notes, and snippets.

@oivoodoo
Last active June 20, 2017 07:12
Show Gist options
  • Save oivoodoo/6822660 to your computer and use it in GitHub Desktop.
Save oivoodoo/6822660 to your computer and use it in GitHub Desktop.
sprockets example for the sinatra application
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
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