I work with a team where we use bower packages in the
vendor/assets/javascripts. Nothing to out of the ordinary, but to compile
them for production we use the following block in our config/application.rb:
|
All was well with this up until a package was added that had a bower.json file
in it. The package in our case was requirejs-plugins. After adding this
package in, during an asset compile we were greated with the following error:
|
When you look in vendor/assets/javascripts/requirejs-plugins you can
clearly see there is a bower.json file, so what is the deal? It turns out
Sprockets is to blame for this one, at least partially. To better explain I’ll
include the code in question; which was 2.12.3 as of this writing.
|
Wow, what is going on here?? Well it turns out this is trying to resolve asset
files for you. It has some pretty good smarts to it; however, when you pass it
a bower.json file it attempts to match any assets defined in it that end in
.json. This is where the the problem happens… there isn’t a .json file
defined in the bower file.
To fix this I essentially had to catch the exception being raised in the do block:
|
This isn’t the best solution and I hope to do a touch of refactoring of this
over the weekend to make that Sprockets::resolve method a little better.