Reputation: 16513
I am just trying to figure out what's the best way to manage Plugin's Asset in Rails. For Eg. Let's consider Bootstrap.
I understand there is "vendor" directory for that but even there
I like to keep below directory structure:
App
|-- assets
| |-- plugins
| | |-- bootstrap
| | | |-- fonts
| | | |-- css
| | | | |-- bootstrap.css
| | | | |-- bootstrap.min.css
| | | |-- js
| | | | |-- bootstrap.js
| | | | |-- bootstrap.min.js
I DON'T LIE to follow below directory structure:
App
|-- assets
| |-- fonts
| |-- css
| | |-- application.css
| | |-- bootstrap.css
| | |-- bootstrap.min.css
| | |-- common-style.css
| |-- js
| | |-- application.js
| | |-- bootstrap.js
| | |-- bootstrap.min.js
| | |-- common-script.css
As you can notice above, now if you start adding plugins, files goes into general folders rather grouping all assets with respect to a plugin stay together. If not grouped it will look messy, isn't it?
I understand there is "vendor" directory even there I LIKE to keep below directory structure:
|-- App
|-- vendor
| |-- assets
| | |-- javascripts
| | |-- stylesheets
| |-- bootstrap
| | |-- fonts
| | |-- css
| | | |-- bootstrap.css
| | | |-- bootstrap.min.css
| | |-- js
| | | |-- bootstrap.js
| | | |-- bootstrap.min.js
I DON'T LIKE to follow below directory structure:
|-- App
|-- vendor
| |-- fonts
| |-- assets
| |-- stylesheets
| | |-- bootstrap.css
| | |-- bootstrap.min.css
| | |-- iCheck.css
| |-- javascripts
| | |-- bootstrap.js
| | |-- bootstrap.min.js
| | |-- iCheck.js
Upvotes: 0
Views: 79
Reputation: 35349
Rails has a special directory for adding third party assets. It's called vendor. Underneath it you will find vendor/assets
, which contains javascripts and stylesheets subdirectories. So use that instead of app/assets
. The latter is where you are supposed to save your own files.
If you are using something like Bootstrap, and this stands true for most plugins, well, it's even easier. Most frameworks are packaged into gems. This means you don't have to worry about manually adding the asset files as the Asset Pipeline handles all of that for you. At most you just have to include the files in your manifest.
A JavaScript file in application.js, for example:
//= require jquery
If you want to go a step further and enforce your own directory structure, you will have to change Rails' config:
config.assets.precompile += %w(vendor/custom_dir/*.jpg)
config.assets.precompile += %w(vendor/custom_dir/*.js)
You can read more about this on Rails guides
You might also find this issue helpful.
Upvotes: 1