sprockets-vendor_gems/README.md

69 lines
1.6 KiB
Markdown

# 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!
``` ruby
require 'sprockets-vendor_gems/extend_all'
```
So, for instance, in Sinatra with [sinatra-sprockets](https://github.com/amarshall/sinatra-sprockets):
``` ruby
# 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?
``` ruby
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:
``` ruby
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:
``` ruby
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.