Gem provides a helper asset_path in javascript.
Add gem to your Gemfile
gem 'js_assets'
And run bundle install
.
In your application.js
//= require app_assets
This directive adds the method asset_path
in the global scope.
Get the path to the template app/assets/javascripts/rubrics/views/index.html
in javascript:
var path = asset_path('rubrics/views/index.html')
// the function will return for development:
// /assets/rubrics/views/index.html
// and for production
// /assets/rubrics/views/index-5eb3bb250d5300736006c8944e436e3f.html
For example we want to use templating Slim in AngularJS app. Let our templates will be in app/assets/webapp/
. We make the following settings:
# config/application.rb
config.assets.paths << Rails.root.join('app', 'assets', 'webapp')
# config/initizlizers/assets_engine.rb
Rails.application.assets.register_engine('.slim', Slim::Template)
# config/environments/production.rb
config.assets.precompile += ['*.html']
Do not forget to connect a file in your application.js
//= require app_assets
Now for the template app/assets/webapp/blogs/edit.html.slim
we can get a path depending on the environment:
var path = asset_path('blogs/edit.html')
// the function will return for development:
// /assets/blogs/edit.html
// and for production
// /assets/blogs/edit-5eb3bb250d5300736006c8944e436e3f.html
You can specify, for example in the initializer, which will be available in the helper asset_path
, and which should be excluded.
To add a file to the list, use:
JsAssets::List.allow << '*.png'
To exclude:
JsAssets::List.exclude << '*.png'
Initially, the list is taken asset falling within the filter app/config/environments/production.rb
config.assets.precompile += ['*.html']
By default:
JsAssets::List.exclude = ["application.js"]
JsAssets::List.allow = ["*.html"]
Be careful! If the list of available JsAssets::List.allow
get a file that is inserted directive require app_assets
, recursion will occur as sprockets
will calculate the md5-based content.
To determine which file name will be used (with md5 or not) use the option:
# Generate digests for assets URLs.
config.assets.digest = true
Copyright © 2013 Zaur Abasmirzoev <[email protected]>
JsAssets is distributed under an MIT-style license. See LICENSE for details.