如何获取Rails资产管道以生成源映射?

时间:2013-01-30 00:33:02

标签: javascript ruby-on-rails heroku asset-pipeline sprockets

我希望让Rails与已编译的coffeescript / minified JS一起生成源映射,以便更好地记录错误。但是,网上似乎没有关于如何执行此操作的全面文档。有没有人这样做过?

我在Rails 3.2和Heroku上。

4 个答案:

答案 0 :(得分:11)

Rails支持缩小javascript的源映射! Rails依赖sprockets进行资产编译,源地图支持被添加到this pull request的链接中。

编辑2016-12-07以更新主要答案文本。

答案 1 :(得分:3)

如果你真的不想要源映射,而只是想在咖啡脚本编译异常中行号,请试试这个:

过去只是在Gemfile中使用coffee-rails会在原始coffeescript源中产生带有行号的异常。然后,他们消失了一个没有行数的例外。我做了一些挖掘,我发现coffee-script-source 1.5.x在编译异常中给出了行号,而coffee-script-source 1.6.x没有。我相信这是一个错误,如果将来“固定”,我不会感到惊讶。

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

然后你会得到例外('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)

而不是('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)

答案 2 :(得分:2)

经过测试。有用。 https://github.com/markbates/coffee-rails-source-maps。但是它会使您的资产渲染速度变慢。

答案 3 :(得分:1)

这看起来应该有效:http://alexspeller.com/2012/09/15/Source_maps_for_coffeescript_in_rails.html

尽管如此,请记住最后的警告:

  

重要提示:这个相当野蛮的黑客取代了正常   coffeescript编译器通过shelling输出到CoffeeScriptRedux   编译器,实际上并没有完成。这只是一个证明   概念,你可能不应该使用它。

所以我不建议在生产中运行它,但是如果你有一个暂存环境(也在Heroku上,也使用缩小的Javascript),它可能会有用。