blog.sorah.jp

Coffeescripting with Ruby #advent11rb

(本記事は Ruby Advent Calendar jp: 2011 に賛同している記事です.この記事は本 Advent Calendar 最初の記事になります.)

Ruby Advent Calendar の最初の記事です.どうもこんにちは.

さて,今回は Ruby と Coffeescript, javascript について語ります.

Ruby から Javascript を使う

さて最近はたくさん javascript のインタプリタがありますね.node とかだとコマンドラインインターフェースも充実しているし.

それらをつかえばもちろん ruby から js を使うことはできるわけです.しかし方法が多すぎる.

それをまとめるために execjs という gem があります.

これは複数の javascript 実行方法に対応していて,自動でどれが現在の環境において実行可能かを判別し どれか適当な方法で実行してくれます.

execjs/README.md 曰く,

つまり,execjs で Javascript を実行すれば適当な方法が採用されるので Ruby から Javascript を使うには向いています.

require "execjs"
ExecJS.eval "(function(name){ return ['hello', name, 'world'].join(' ') })('javascript')" #=> 'hello javascript world'

しかし, javascript を ruby から使うメリットはあるのでしょうか.

Coffeescript

Coffeescript という Javascript にコンパイルされる Javascript で実装された言語があります.

この言語は ruby に python をちょっと混ぜたものをコーヒーに突っ込んだような言語です.

Ruby 等を書いていて Javascript の書きにくさを実感しますが,Coffeescript を使うことでそれをある程度解消することができます.

最近だと Rails 3.1 などでデフォルトが Coffeescript になった事で Ruby 界で一層有名になった感じですかね.

Ruby から Coffeescript をコンパイルする

Rails 3.1 などもやっているように,Coffeescript を Javascript にコンパイルしています.

Coffeescript のインタプリタ (Javascript コンパイラ) は Javascript で実装されているため,JS が実行できれば Coffeescript のコンパイルをすることができます.

そして,先ほど紹介した execjs を利用して coffeescript を javascript にコンパイルする gem があります.

https://github.com/josh/ruby-coffee-script

これを使うことで簡単に coffeescript を javascript にコンパイルすることが可能です.

Sinatra では coffee :the_script などでこれを利用して coffeescript を javascript として render することが可能です.

では,Happy coffeescript life を!

Backfilled at , Published at