[Ruby] Rails 3.1.1 で CoffeeScript から変換される JavaScript の結果を知りたくていろいろやってみた
Rails 3.1.1(3.1.0) では、CoffeeScript が使える。 ふと、CoffeeScript のファイルを編集中に、そのスクリプトがどんな JavaScript に変換されるのか知りたくなった。
Vim 使いの私は、てっとり早く vim-coffee-scriptとCoffeeScript をインストールして、vim で
:CoffeeCompile
として確認してしまった。
でも、Rails 3.1.1(3.1.0) は、CoffeeScript 本体(というか coffee コマンド)を使ってコンパイルしてないんだよな。 そこで、Rails 3.1.1 を調べてみたところ、Ruby CoffeeScript というのが見つかった。これを使えばコンパイルできるみたいだ。
コンパイルだけする mycoffee を作って確認してみた。mycoffee コマンドは3行だけ。
$ cat mycoffee
#!/usr/local/bin/ruby
require 'coffee-script'
print CoffeeScript.compile File.read(ARGV.shift)
今回コンパイルしてみるCoffeeScriptの中身はこんなの。
$ cat depot/app/assets/javascripts/carts.js.coffee
# Place all the behaviors and hooks related to the matching controller here.
# All this logic will automatically be available in application.js.
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
#
$ ->
if $('#cart tr').not('.total_line').length is 0
$('#cart').css('display', 'none')
では、実行してみる。
$ ./mycoffee depot/app/assets/javascripts/carts.js.coffee
(function() {
$(function() {
if ($('#cart tr').not('.total_line').length === 0) {
return $('#cart').css('display', 'none');
}
});
}).call(this);
CoffeeScript本家でもコンパイルしてみる。
$ coffee -p work/rails/depot/app/assets/javascripts/carts.js.coffee
(function() {
$(function() {
if ($('#cart tr').not('.total_line').length === 0) {
return $('#cart').css('display', 'none');
}
});
}).call(this);
ということで空行が入る以外は同じ。
ちなみに、Rails 3.1.1 のCoffeeScriptのバージョンは、
CoffeeScript.version
で確認できる。 また、利用しているCoffeeScriptコンパイラのソースのパスは、
CoffeeScript::Source.path
で確認できる。
ちなみに、CoffeeScriptコンパイラを指定したい場合は、COFFEESCRIPT_SOURCE_PATH 環境変数で CoffeeScriptコンパイラのソース(恐らくJavaScriptが前提だと思われる)のパスを指定すればいいっぽい(未確認)。
| 固定リンク
この記事へのコメントは終了しました。
コメント