README.md in eastwood-0.3.2 vs README.md in eastwood-0.3.5

- old
+ new

@@ -1,6 +1,134 @@ Eastwood ======== -Eastwood is still under development. Hit that watch button, yo. +> Start your client side out right. -This project rocks and uses MIT-LICENSE. +[![Build Status](https://secure.travis-ci.org/jeremyruppel/eastwood.png)](http://travis-ci.org/jeremyruppel/eastwood) + +About +----- + +Eastwood brings your Rails routes to the client side in a slick, unobtrusive way. + +As of v0.3.2, Eastwood supports Rails >= 3.1.0, which means both `ActionDispatch` +and `Journey` routers are supported. + +Usage +----- + +Include eastwood in your gemfile: + + gem 'eastwood' + +Then mount the engine wherever you want: + + mount Eastwood::Engine => '/eastwood + +> The place you mount the engine actually doesn't make much of a difference right now. +> The engine itself has no routes, just a single javascript asset you can include +> through the pipeline. + +Finally, require `eastwood.js` in your javascript manifest. + + #= require eastwood + +Routes +------ + +Eastwood will give you a namespace for your application, as well as all of your named +route helpers converted to javascript functions. If your app is named **MyApp**, requiring +the Eastwood javascript will give you something like this available on `window`: + + MyApp : { + env : 'development', + routes : { + new_user_path : function( format ){ + // javascript to return you a string route, with segment keys + // interpolated, and including either the format you specify + // or the default 'json'. + } + } + } + +> This namespace is also a great place to put the rest of your client-side code! + +Configuration +------------- + +Create a `config/initializers/eastwood.rb` and you can do the following: + + Eastwood.configure do |config| + config.default_route_format = :json # or :xml, 'html', etc to change it, or false or '' to leave it blank + end + +Hashes +------ + +Eastwood can include arbitrary "routes" for the client-side too. In your configure block: + + Eastwood.configure do |config| + config.hash :foo, '#/foo' + config.hash :bar, '/bar/:id' + end + +This will give you `foo_hash` and `bar_hash` as functions in `MyApp.routes`, with all segments +interpolated as you would expect. + +Exports +------- + +Eastwood can also export arbitrary values to the client side: + + Eastwood.configure do |config| + config.export :foo => 'bar', :baz => 123.45 + end + +Pro Tips +-------- + +Eastwood plays *really* well with [Sammy.js](http://sammyjs.org/): + + # include all of our eastwood routes as sammy helpers + @helpers MyApp.routes + + # ... + + # use our eastwood routes in the event context + @render @clients_path( 'wal' ), result, -> $( '#clients' ).html @content + +Eastwood also plays really well with client-side templating solutions that treat +functions like first-class citizens like, *ahem*, [walrus](https://github.com/jeremyruppel/walrus): + + <li> + <a href="{{@clients_path( 'html' )}}">Clients</a> + </li> + +Reloading +--------- + +Since Sprockets [doesn't know when your context helpers change](https://github.com/sstephenson/sprockets/blob/master/lib/sprockets/base.rb#L35), you may +need to clear out your sprockets cache when you change your routes. Just run `rake tmp:clear`. + +License +------- + +> Copyright 2012 Jeremy Ruppel +> +> Permission is hereby granted, free of charge, to any person obtaining +> a copy of this software and associated documentation files (the +> "Software"), to deal in the Software without restriction, including +> without limitation the rights to use, copy, modify, merge, publish, +> distribute, sublicense, and/or sell copies of the Software, and to +> permit persons to whom the Software is furnished to do so, subject to +> the following conditions: +> +> The above copyright notice and this permission notice shall be +> included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +> NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +> LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +> OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +> WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.