What does require_self mean?

Ruby on-Rails-3.1Sprockets

Ruby on-Rails-3.1 Problem Overview


In rails3.1 application.css we could see

/*
 *= require_self
 *= require_tree .
*/

I know that require_tree . is just telling the system to bundle together everything from the stylesheets folder into a single file.

But what does require_self tells?

Ruby on-Rails-3.1 Solutions


Solution 1 - Ruby on-Rails-3.1

From http://guides.rubyonrails.org/asset_pipeline.html:

/* ...
*= require_self
*= require_tree .
*/

"In this example require_self is used. This will put the CSS contained within the file (if any) at the top of any other CSS in this file unless require_self is specified after another require directive."

Solution 2 - Ruby on-Rails-3.1

Shedd's answer used to be correct but now the meaning has changed ever so slightly;

Again, from http://guides.rubyonrails.org/asset_pipeline.html (bolding my own):

> In this example require_self is used. This puts the CSS contained within the file (if any) at the precise location of the require_self call. If require_self is called more than once, only the last call is respected.

So you can have require_self at any point, and any CSS you have in the file will be injected into the point you wrote require_self

Solution 3 - Ruby on-Rails-3.1

//= require_self

It loads the file itself, to define the order that the files are loaded.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkriysnaView Question on Stackoverflow
Solution 1 - Ruby on-Rails-3.1sheddView Answer on Stackoverflow
Solution 2 - Ruby on-Rails-3.1TobyView Answer on Stackoverflow
Solution 3 - Ruby on-Rails-3.1rafamvcView Answer on Stackoverflow