lib | ||
spec | ||
.gitignore | ||
Gemfile | ||
LICENSE | ||
Rakefile | ||
README.md | ||
sprockets-vendor_gems.gemspec |
Get at available assets in loaded gems in Sprockets
Who says you need Rails Engines to use the vendored assets in gems? All you need is
sprockets-vendor_gems
. Use those cool vendored JavaScript & CSS gems in anything!
The easiest way? Punch Sprockets right in the duck!
require 'sprockets-vendor_gems/extend_all'
So, for instance, in Sinatra with sinatra-sprockets:
# config.ru
require 'sinatra/base'
require 'sprockets-vendor_gems/extend_all'
require 'sinatra/sprockets'
class MyApp < Sinatra::Base
register Sinatra::Sprockets
get '/' do
"hi"
end
end
map "/assets" do
run Sinatra::Sprockets.environment
end
run MyApp
Every Sprockets::Environment
instance now has every vendored gems asset path added!
By default, that's the javascripts
, stylesheets
, and images
directories. Need more?
Sprockets::VendorGems.default_types << "coolthings"
Do that before any Sprockets::Environment
s get instantiated.
Want more manual control? Either get the list of asset paths:
require 'sprockets-vendor_gems'
env = Sprockets::Environment.new('.')
Sprockets.find_gem_vendor_paths(:for => :javascript).each do |path|
env.append_path path
end
or, instead of duck punching all of Sprockets, get an Environment with those paths in there already:
require 'sprockets-vendor_gems'
env = Sprockets::EnvironmentWithVendoredGems.new
Yeah!
You may have to futz a bit with require
and fake classes for particular gems, especially if they really
rely on Rails to get their job done.