Why do I have to require bootstrap if I'm using the gem


If you mean in your JavaScript or (S)CSS "application" pages, that's because there's no other mechanism that a gem could use to auto-mount the paths there. The Bootstrap gem is essentially just providing packaging for the JS and CSS that is Bootstrap. That last few inches is you adding it to your application in a thoughtful way, just as you would any other JS or (S)CSS file.

If there were an "automatic" way to add it, it would probably be like the CSS ` *= require_tree .` construct, which works alphabetically. That would ignore any overrides you wanted to set, or in the case of SCSS, any variables you wanted to populate with values. Doing things the long-hand way gives you a chance to ensure that requirements are met and there's a predictable order to loading. The same sort of thing would be even more critical in JS, where alphabetical order might load a jQuery plugin before jQuery itself.