【问题标题】:How can I get the Rails asset pipeline to produce source maps?如何让 Rails 资产管道生成源地图?
【发布时间】:2013-01-13 17:17:45
【问题描述】:

我想让 Rails 在编译后的 coffeescript/minified JS 旁边生成源映射,以便更好地记录错误。不过,网上似乎还没有关于如何做到这一点的全面文档。有人做过吗?

我在 Rails 3.2 和 Heroku 上。

【问题讨论】:

  • 源图 - 它是什么?
  • 源映射是一种将混淆/编译/压缩的源代码映射回其原始形式的方法。 html5rocks.com/en/tutorials/developertools/sourcemaps
  • 您是否看到或听到现在(在 RoR 开发环境中)是否有可能?
  • 有人提到这在边缘轨道中是可能的,我只看到了一些针对咖啡脚本地图的黑客攻击。
  • hm...有趣...现在我只是在我的 IDE RubyMine 中使用“重新格式化代码”功能。它将代码重新格式化为半可读状态(基本上返回行和选项卡)......但是,当然,它变得与原来的不一样

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


【解决方案1】:

Rails 支持缩小 JavaScript 的源映射! Rails 依赖Sprockets 进行资产编译,并且在this pull request 中向Sprockets 添加了源映射支持。

【讨论】:

【解决方案2】:

如果您不是真的想要源映射,而只是想要 coffee-script 编译异常中的行号,试试这个:

过去,在您的 Gemfile 中仅包含 coffee-rails 会在原始的 coffeescript 源代码中产生带有行号的异常。然后,它们以无行号的异常消失了。我做了一些挖掘,发现coffee-script-source1.5.x 在编译异常中给出了行号,而coffee-script-source1.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)

【讨论】:

【解决方案3】:

对此进行了测试。有用。 https://github.com/markbates/coffee-rails-source-maps。但是,它会使您的资产渲染速度慢得多。

【讨论】:

  • 如果您正在使用源映射,this patch 修复了语法错误的行号问题coffee-rails-source-maps gem。
【解决方案4】:

这看起来应该可以工作:http://alexspeller.com/2012/09/15/Source_maps_for_coffeescript_in_rails.html

不过,请记住最后的警告:

重要提示:这种相当残酷的 hack 取代了正常的 通过使用 CoffeeScriptRedux 编译咖啡脚本 编译器,实际上还没有完成。这只是证明 概念,你可能不应该使用它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2012-02-04
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    相关资源
    最近更新 更多