Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
79 lines (55 sloc) 2.37 KB

Closure Sprockets

Sprockets preprocessor for Google's Closure tools + Closure-templates (soy) compiler.

Integrating with Rails 3

If you want to use closure as your Javascript library in Rails 3, add this gem to your Gemfile:

gem 'closure-sprockets'

The gem ships with a Railtie which will automatically register a Closure preprocessor. From here, two more steps:

// in one of your javascript files

newHeader = goog.dom.createDom('h1', {}, 'Hello world!');
goog.dom.appendChild(document.body, newHeader);

You can also add a template in your assets folder, and it will be automatically compiled to Javascript for you! Ex:

/** */

{namespace examples.simple}

 * Says hello to the world.
{template .helloSoy}
  Hello from Soy!
var soy = goog.dom.createDom('h1', {'style': 'background-color:#EEE'}, examples.simple.helloSoy());
goog.dom.appendChild(document.body, soy);

That's it! Point your browser at your page and you should have a hello world greeting from Google Closure, preprocessed by the Rails 3 Asset Pipeline and without any external Python dependencies or dynamic Javascript loading.

Optional configuration

If you decided to put your closure-library directory somewhere other than vendor/assets, then you'll have to update your environment config with the right path:

config.closure.lib = 'vendor/assets/path/to/closure-library'

Using Closure Compressor for Minification

Closure also provides its own Javascript compressor. If you wish to use it, pull in the closure-compiler gem:

# in your Gemfile
gem 'closure-compiler'
# in your environment configuration
config.assets.js_compressor =

If you are not using the closure compiler, then you may want to disable the dynamic deps.js loading. To do so, add the following snippet in application.html.erb above the javascript_include tag:

    <script type="text/javascript">
      var CLOSURE_NO_DEPS = true;


(MIT License) - Copyright (c) 2011 Ilya Grigorik