54

I've been transitioning an app to Rails 3.1 (and now on to 3.2) and watched the Railscast on the asset pipeline. I moved all of my third-party jquery plugin files to the /vendor/assets/javascripts/ directory. In my /app/assets/javascripts/application.js I have the following:

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require_self

I realized the require_tree . call only loads the tree for the /app/assets/javascripts/ directory. (Is that correct?) What's the best way to include all the "vendor" javascripts? (I'm not worried about ordering at this point.) Of course I could require them line by line in /app/assets/javascripts/application.js. My other thought was to create /vendor/assets/javascripts/vendor_javascripts.js with the following:

//= require_tree .

And then in /app/assets/javascripts/application.js add the following:

//= require vendor_javascripts

This seems a little clunky though. Is there a better way to automatically include all the "vendor" (and/or "lib") javascripts?

PS. I saw this about index.js files, but I would potentially end up with multiple files named index.js, right? Oh, and I tried restarting my server throughout.

2 Answers 2

75

You can add something like this in your app/assets/javascripts/application.js file to include all the vendor javascripts:

//= require_tree ../../../vendor/assets/javascripts/.
Sign up to request clarification or add additional context in comments.

5 Comments

Forgot about the whole relative paths thing :) Thank you, works great!
Actually, I think the OP's suggested approach is less clunky
I recommend just adding a vendor folder under app/assets. The vendor/assets thing just seems unnecessary.
I tend to agree, but Rails' default layout for a new app gives you vendor/assets so I think many will try to make that work :/
This is still the recommended way when using manifest.js in the Rails Docs: guides.rubyonrails.org/….
21

I know it's an old question, but you can create a manifest file on the vender/assets/javascript folder:

 #vendor/assets/javascripts/my_jquery_plugins/manifest.js
 # require_tree .

And in you application.js:

 //= require my_jquery_plugins/manifest.js

If you're using Rails 4, name the manifest.js as index.js and in your application.js:

//= require my_jquery_plugins

It's less hacky than relative path described.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.