Twitter Bootstrap 3 in a Rails 4 Application

Over the past few days while working through a proof of concept web application. I was searching for a way to incorporate Twitter Bootstrap 3 as it will decrease my interface development time. Twitter Bootstrap 3 was released within the past few weeks so support from a gem was out of the question. I did try a few of the gems that were out there but most don’t support Bootstrap 3. The end solution was to add Bootstrap 3 manually, which is quite easy.

I came accross a Stack Overflow suggestion of just uploading the folders of assets you need to the vendor folder in your Rails application structure. Which surprisingly was easy and worked; no need to manage what version of a gem I need, etc.

Simply, Download Twitter Bootstrap 3. In the downloaded archive you will see a ‘dist’ folder which will house the css, javascripts, and fonts folders we will want to copy to our Rails application vendor/assets/ directory.

After this we need to let our Rails application know to include these newly added javascript and css files. To do this we edit the app/assets/stylesheets/application.css:

*= require bootstrap

And edit the app/assets/javascripts/application.js:

//= require bootstrap

Now if you run your application you can see the assets will load properly. One of the issues I ran into while adding glyphicons was that they wouldn’t load. Digging further I found the font files weren’t being requested by the application.

To get the glyphicons working I had to add a line to the config/application.rb file. Add the following within class Application < Rails::Application.

config.assets.paths << "#{Rails}/vendor/assets/fonts"

Then at the terminal run the command to get the assets to compile:

rake assets:precompile RAILS_ENV=development

Now we need to update the bootrap.css file (you’ll likely need to update the bootstrap.min.css file as a result, too), search for @font-face with your text editor and update the paths to the font urls to include /assets/glyphicons-halfings-regular.* (include the file extension).

This is what the url’s will be originally in the bootstrap.css file.

@font-face {
   font-family: 'Glyphicons Halflings';
   src: url('../fonts/glyphicons-halflings-regular.eot');
   src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),          url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');

You want to change each of these resource locations to /assets/glyphicons-halfings-regular.* as shown below.

@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('/assets/glyphicons-halflings-regular.eot');
  src: url('/assets/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),      url('/assets/glyphicons-halflings-regular.woff') format('woff'), url('/assets/glyphicons-halflings-regular.ttf') format('truetype'), url('/assets/glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');

Refresh or restart your Rails server and you should be up and running with glyphicons and Bootstrap 3 without the need of a gem.