web-dev-qa-db-ja.com

Railsアセットパイプラインを取得してソースマップを作成するにはどうすればよいですか?

エラーロギングを改善するために、Railsコンパイルされたcoffeescript /縮小されたJSと一緒にソースマップを作成します。これを行う方法に関するネット上の包括的なドキュメントはないようです。まだ、誰かがこれをやったことがありますか?

Rails 3.2とHerokuです。

43
Vincent Woo

Railsは縮小されたJavaScriptのソースマップをサポートしています! Railsアセットのコンパイルは Sprockets に依存し、ソースマップのサポートが このプルリクエスト でSprocketsに追加されました。

13
jsanders

ソースマップが本当に必要ではなく、代わりに単に必要な場合はcoffee-script compile exceptionsの行番号これを試してください:

以前は、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)
4
whitehat101

これをテストしました。できます。 https://github.com/markbates/coffee-Rails-source-maps 。ただし、アセットのレンダリングが非常に遅くなります。

3
cryo28

これは動作するはずです: http://alexspeller.com/2012/09/15/Source_maps_for_coffeescript_in_Rails.html

ただし、最後の警告に留意してください。

重要な注意:このかなり残忍なハックは、実際には終了していないCoffeeScriptReduxコンパイラーにシェルアウトすることにより、通常のcoffeescriptコンパイラーを置き換えます。これは単なる概念実証であり、おそらく使用すべきではありません。

したがって、これを本番環境で実行することはお勧めしませんが、ステージング環境(Heroku上でも、Javascriptを縮小したもの)がある場合は、役立つかもしれません。

2
Alex Ghiculescu