Ruby CoffeeScriptをつかう


このエントリーをはてなブックマークに追加

Ruby CoffeeScriptを使うと、RubyからCooffeeScriptをコンパイルできるようになります。

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

インストール

gem install で簡単にインストール出来ます。 bundleを使ってプロジェクトのgemにインストールしときます。

 % bundle install --path vender/bundle
 Fetching gem metadata from https://rubygems.org/.....
 Using rake (0.9.2.2)
 Using addressable (2.2.8)
 Using ffi (1.0.11)
 Using childprocess (0.3.2)
 Installing coffee-script-source (1.3.3)
 Using multi_json (1.3.5)
 Installing execjs (1.3.2)
 Installing coffee-script (2.2.0)
 Using diff-lcs (1.1.3)
 Using jasmine-core (1.2.0)
 Using rack (1.4.1)
 Using rspec-core (2.10.0)
 Using rspec-expectations (2.10.0)
 Using rspec-mocks (2.10.1)
 Using rspec (2.10.0)
 Using libwebsocket (0.1.3)
 Using rubyzip (0.9.8)
 Using selenium-webdriver (2.21.2)
 Using jasmine (1.2.0)
 Using bundler (1.1.3)
 Your bundle is complete! It was installed into ./vender/bundle

Gemfile

source 'https://rubygems.org'

gem 'jasmine'
gem 'rake'
gem 'coffee-script'

Rakefileを用意してコンパイルをタスクに登録する

Ruby CoffeeScriptはコマンドではなく、Gemのライブラリです。

nodeのcoffeeコマンドみたいに使いたい時にはcoffeeのパスを引数で受け取ってコンパイル結果を特定の場所に出力するようなプログラムを自分で用意する必要があります。

今回はプロジェクト中のファイルを指定した場所に出力するということがやりたいので、rakeでコンパイルするようなものを用意してみます。

Rakefile

require 'coffee-script'

COFFEE_FILES = {"../src/template.coffee" => "./public/javascripts/template.js"}
desc "compile CoffeeScript to JavaScript"
task :coffee do
  COFFEE_FILES.each do |from, to|
    puts "compile from #{from}"
    coffee = CoffeeScript.compile File.read(from)
    File.open to, "w" do |f|
      f.puts coffee
    end
    puts "compile to #{to}"
  end
end

COFFEE_FILES定数にハッシュで、コンパイル元のファイルとコンパイル先のファイルのパスを指定しています。

CoffeeScript.compile というメソッドは引数として与えられた文字列をCompileされたJavaScriptを文字列で返します。

実行

# rake -T でRakefileに登録されているタスクの一覧を表示できます。
% rake -T
rake coffee  # compile CoffeeScript to JavaScript

% rake coffee
compile from ../src/template.coffee
compile to ./public/javascripts/template.js