質問: Ruby on Railsでcooffeeスクリプトをいくつか書くと、それらはアセットパイプラインで一つのスクリプトにまとめられて、javascript_include_tagを仕込んでおけばOKとなると思うんですが、 そこそこややこしい事やってるからcoffeescriptで書きたい、だけど量は多くない、だからスクリプトを読み込むリクエストがもったいない事になっている、という状況のとき、 コンパイルしたjavascriptを直接HTMLに埋め込む事って出来るんでしょうか? もしそれができるのならcssでも同じことが出来るんですかね? まあ遅延読み込み使えとか、javascriptくらい手書きしろ、っていうのはあると思うんですが、 もしかしてjavascript埋めこもうとしたらjQueryで大変な事になるとかもありますかね? --追記 話がややこしくなりそうなので、jQueryもひっくるめて埋める、ということにしたいと思います。 coffeescriptのコンパイル結果がjQueryを使わないようにする等の話はまたの機会にするとして、ここではコンパイル済みのjavascriptを`
回答: いまでも動くかわからないですが CoffeeBeans っていうのが Rails 3.1 時代にあったみたいです。 ソースを見ると、複雑なことはしていないので、 仮に最新のRubyで動かなくても、比較的容易に修正&移植できるように感じました。 CoffeeBeans を使うと ``` <%= coffee_script_tag do %> alert 'coffee script is awesome!' <% end %> ``` こんな風に書けるらしいです。 ### 追記: 仕組み解説 `<%= coffee_script_tag do %>` ってのはただの `View` のメソッド呼び出しです。 メソッドを呼び出してその戻り値の文字列で、 `<% end %>` までを置き換えてくれます。 で、このメソッドですが ココ で定義されています。 あとは普通にタグ間の文字列を `capture(&block)` して、 CoffeeScript として JS へコンパイルしていますね。 なお `coffee_script_tag` メソッドが `View` に生えているのは、 ココでinclude しているから、となります。 コンパイルが実行されるタイミングとしては、 このタグが書かれたテンプレートがHTMLとしてレンダリングされる時です。 つまりリクエストがあるたびに毎回 CoffeeScript をコンパイルすることになるので、 普通に assets としてコンパイルする場合よりも、 当然遅くなる(サーバの負荷は上がる)でしょう。 個人的には、普通に assets とするほうが良いとは思いますが、参考まで。