Problem Twitter Bootstrap Glyphicons not show in Heroku

The rails pipeline with Heroku is something difficult to master…

Today I had a problem that has taken some hours to be fixed.

I precompile assets as usual, and I realised that Glyphicon files have a different extension than the usual .js and .css, so I first had to extend it:

config.assets.precompile += %w( *.js *.css *.eot *.woff *.ttf *.svg )

Then I saw that the files were being produced correctly,

"twitter/bootstrap/glyphicons-halflings-regular-a6d95d67a6db3f50ff64b2103e8c9348.woff":{"logical_path":"twitter/bootstrap/glyphicons-halflings-regular.woff"

(excerpt of the manifest.json file)

But they did not show in Heroku

GET http://nexmot.getspeak.com/assets/twitter/bootstrap/glyphicons-halflings-regular.woff 404 (Not Found)

Although I could see them:

$ heroku run bash
$ ls public/assets

After some crazy investigation, this video gave me the solution:

You have to put this line in production.rb

config.assets.compile = true

To learn more, check out this excellent resources:
https://devcenter.heroku.com/articles/rails-4-asset-pipeline
http://guides.rubyonrails.org/asset_pipeline.html

staging.rb in a new rails project

Rails does not include a config/staging.rb file in it’s default blueprint for a new project.

This can provoke problems when you try to run the server for the staging environment and the file does not exist. It happened to me while trying out a vagrant machine and there was a unicorn script in init.d

Solution: make sure this file exists when you want to run this mode. I got crazy!

I suggest that the rails software created this file by default. The reason not to do it is to avoid cumbersome initial installation. But it is somehow widely extended in the community that there are four environments:

  • development
  • test
  • staging
  • production