Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 3.1: javascripts not served correctly from vendor/assets directory?

I have organized my javascript files in a couple of directories and I have found the following strange behavior. Given the following tree:

+ app
  + assets
    + javascripts
      + common
      + public
        + common
        + home
          - home.js

home.js looks like this:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_directory ../../jquery_plugins
//= require_directory ../../common
//= require_directory ../common
//= require_self

Now the trick lies in the jquery_plugins directory. I placed this inside vendor/assets/javascripts (which is included in the asset load path, when I check Rails.application.config.assets.paths). When I do this I get the error: require_tree argument must be a directory. When I move that directory to app/assets/javascripts then everything works.

Does anybody have a clue as to what I'm doing wrong? Or is this a bug?

like image 792
Pascal Lindelauf Avatar asked Sep 26 '11 09:09

Pascal Lindelauf


1 Answers

You could add a manifest file to the directory you are trying to serve with something like vendor/assets/javascripts/jquery_plugins/manifest.js

//= require_directory .

and require it in your app/assets/javascripts/application.js via

//= require jquery_plugins/manifest

Edit (even simpler way)

Thanks to @LeEnno for this

You can actually put all your single library related files in a folder named after the library for example vendor/assets/javascripts/bootstrap and in that same folder add an index.js which will act as your manifest and Rails will automatically pick it up

if in your

app/assets/javascripts/application.js

you add the line

//= require bootstrap

SO EASY!!!
Link to Rails Asset Pipeline Guide

like image 126
mraaroncruz Avatar answered Oct 04 '22 21:10

mraaroncruz