2011年3月23日水曜日

backbone.jsをrails3に読み込む為におまじない

■概要

backbone.jsでの開発を始める為に、簡単なgeneratorを作っておくと、うれしいかも

■手順

・新規にgeneratorを作成
$ vim lib/generators/backbone_js_generator.rb

class BackboneJsGenerator < Rails::Generators::Base
  desc "This generator downloads and installs json2.js, underscore.js, backbone.js"
  def download_json2_js
    say_status("fetching", "json2.js", :green)
    get "https://github.com/douglascrockford/JSON-js/raw/master/json2.js",
        "public/javascripts/json2.js"
  end

  def download_underscore_js
    say_status("fetching", "underscore.js", :green)
    download_via_documentcloud("underscore")
    download_via_documentcloud("underscore", "-min")
  end

  def download_backbone_js
    say_status("fetching", "backbone.js", :green)
    download_via_documentcloud("backbone")
    download_via_documentcloud("backbone", "-min")
  end

  private
  def download_via_documentcloud(product, suffix = "")
    get "http://documentcloud.github.com/#{product}/#{product}#{suffix}.js",
        "public/javascripts/#{product}#{suffix}.js"
  end

end

・generatorを起動し必要なjsをファイルを出力する
$ rails g backbone_js

・javascript_include_tag用の設定を作成
$ vim config/initializers/backbone_js.rb

module BackboneJs
  module Rails
    class Railtie < ::Rails::Railtie
      config.before_configuration do
        config.action_view.javascript_expansions[:backbone] =
          ::Rails.env.production? ? %w(json2 underscore-min backbone-min) : %w(json2 underscore backbone)
      end
    end
  end
end
こうしておけば、application.html.erbとかで <%= javascript_include_tag :backbone %> と書けます。 defaultsに混ぜても良いかもしれませんが画面によっては不要そうなので分けてみました。

■TODO
gem化(汗)

■参考
jquery-rails

0 件のコメント:

コメントを投稿