/unpoly

Unobtrusive Javascript Framework for server-side applications

Primary LanguageCoffeeScriptMIT LicenseMIT

Unobtrusive JavaScript framework for server-side applications

Unpoly enables fast and flexible frontends with minimal changes to your server-side code.

This repository is home to both the Unpoly JavaScript code and its (optional) bindings for Ruby on Rails (unpoly-rails gem).

Getting started

Development

Running tests

Overview:

  • This currently requires Ruby
  • There's a Rails app in spec_app
  • Jasmine tests for Unpoly live in spec_app/spec/javascripts
  • RSpec tests for the unpoly-rails gem live in spec_app/spec/controllers

Install dependencies for tests:

  • Install Ruby 2.1.2
  • Install Bundler by running gem install bundler
  • cd into spec_app
  • Install dependencies by running bundle install

To run Jasmine tests for Unpoly:

  • cd into spec_app
  • Start the Rails server by running rails server
  • Access http://localhost:3000/specs to see the Jasmine test runner

To run RSpec tests for the unpoly-rails gem:

  • cd into spec_app
  • Run rspec

Making a new release

We are currently feeding four release channels:

  • Manual download from GitHub
  • npm
  • Bower (which is based on Git and version tags)
  • Rubygems (as the unpoly-rails gem)

We always release to all channel simultaneously.

To prepare a new version:

  1. Edit lib/unpoly/rails/version.rb and bump the version number. Use semantic versioning.
  2. Add an entry to CHANGELOG.md
  3. Commit and push the version bump and CHANGELOG.md

Now we can release a new version. This requires your to be logged into Rubygems and npm:

  1. From the project root, type rake publish:build. This will output minified JS and CSS files to the dist folder. It also updates the package.json for npm.
  2. Commit and push the generated files. There is a rake task rake publish:commit that helps with this.
  3. From the project root, type rake publish:release. This will publish a new gem version to Rubygems.org.
  4. It will also push a tag for this version, which Bower requires for its own versioning scheme. Finally it publishes to npm.

Always remember to build, commit and push build artifacts before calling rake publish:release so the Git tag points to the correct commit.

If you have done this process a few times and know what you're doing, you can call rake publish:all to run all these steps in sequence.

After you have published all release channels, remember to:

  1. Update unpoly.com so users see the new version, CDN link and CHANGELOG.
  2. Send a message to the E-mail group with the title "Unpoly X.Y.Z released". You can copy the relevant CHANGELOG part from here.

Credits