Comment puis-je obtenir le pipeline de ressources Rails pour produire des cartes sources?

Je voudrais que Rails produise des cartes sources à côté du coffeescript / minified JS compilé, pour une meilleure journalisation des erreurs. Il ne semble pas y avoir de documentation complète sur le net pour savoir comment faire, cependant. Quelqu’un l’a-t-il fait?

Je suis sur Rails 3.2 et Heroku.

Rails prend en charge les cartes source pour le javascript minifié! Rails s’appuie sur des pignons pour la compilation d’actifs, et la prise en charge des cartes sources a été ajoutée aux pignons dans cette requête d’extraction .

Édité le 2016-12-07 pour mettre à jour le texte principal de la réponse.

Si vous ne voulez pas vraiment de cartes source, mais que vous voulez simplement des numéros de ligne dans les exceptions de compilation des scripts café, essayez ceci:

Auparavant, le fait d’avoir des rails de café dans votre Gemfile produisait des exceptions avec des numéros de ligne dans la source originale de coffeescript. Ils ont ensuite disparu avec une exception sans numéro de ligne. J’ai fait quelques recherches, et j’ai trouvé que coffee-script-source 1.5.x donnait des numéros de ligne dans les exceptions de compilation, contrairement à coffee-script-source 1.6.x. Je crois que c’est un bug, et je ne serais pas surpris si cela était “corrigé” dans le futur.

 # Gemfile gem 'coffee-rails', '~> 4.0.0' gem 'coffee-script-source', '~> 1.5.0' # 1.6 doesn't include line numbers in exceptions 

Ensuite, vous obtiendrez des exceptions comme (‘coffee-script-source’, ‘~> 1.5.0’)

 Showing /Users/.../app/views/layouts/application.html.erb where line #12 raised: SyntaxError: missing } on line 15 (in /Users/.../app/assets/javascripts/app.js.coffee) 

Au lieu de (‘coffee-script-source’, ‘~> 1.6.3’)

 Showing /Users/.../app/views/layouts/application.html.erb where line #12 raised: SyntaxError: missing } (in /Users/.../app/assets/javascripts/app.js.coffee) 

Testé cela. Ça marche. https://github.com/markbates/coffee-rails-source-maps . Cependant, cela rend votre rendu beaucoup plus lent.

Cela semble fonctionner: http://alexspeller.com/2012/09/15/Source_maps_for_coffeescript_in_rails.html

Cependant, gardez à l’esprit l’avertissement à la fin:

Note importante : ce hack plutôt brutal remplace le compilateur coffeescript normal en bombardant le compilateur CoffeeScriptRedux, qui n’est en fait pas terminé. Ceci est juste une preuve de concept, vous ne devriez probablement pas l’utiliser.

Donc, je ne recommanderais pas de l’exécuter en production, mais si vous avez un environnement de stockage intermédiaire (également sur Heroku, également avec un Javascript réduit), cela pourrait être utile.