Waves 0.7.5 (Janus)
Waves is an open source framework for building web applications in Ruby, built from a smashing combination of mapping lambdas for request routing and just-in-time resources for request processing. Waves doesn’t care which ORM, template renderer, or Rack handler you use. Waves is thread-safe when you want it to be.
In Soviet Russia, Waves installs you
Official release gem on Rubyforge:
gem install waves
Source on GitHub:
http://github.com/dyoder/waves/tree/0.7.5
Tarball:
http://github.com/dyoder/waves/tarball/0.7.5
Fixes
- Better Windows support for scripts and rake tasks (e.g. use FileUtils instead of shelling out)
rake schema:migrationdetects correct migration level when successive migrations have same name- Renderers sorted alphabetically for predictable results when multiple template files match
Improvements in 0.7.5
- Layers and Foundations – A Layer is the Waves equivalent of a plugin (or a Merb slice), and we’re replacing core functions Waves with them. Layers use AutoCode to magic up framework and application elements in a flexible, swappable, modular, reloadable way. A Foundation is a basic application structure composed of one or more Layers. We really like layers, and we think you will, too.
- Waves is now ORM agnostic, thanks to Layers. The distribution comes with a Sequel Layer, which is included in the default generated app. You can run ORMless by removing the include line in lib/application.rb. ActiveRecord, DataMapper, and FileBase layers are under development.
- Works with any Rack handler: mongrel, thin, ebb. Configured with the
handlermethod in your configuration files. - Support for the
deferred?method used by some evented handlers, such as thin and ebb - Mutex is now optional with synchronize? method
- Boilerplate code stripped from generated applications without mercy. The application begged, saying, “at least let me keep this one little Rake task that never hurt anybody”, but we said, “Give me my two dollars.”
- Tests – Specs, actually. We use Bacon for specs and Facon for mocks. Rack::MockRequest is a star. You can run the tests with ‘rake verify‘.
- ruby-debug support
- The application generator has been rewritten using RakeGen. It can now update existing applications, and it is careful to ask you whether it should clobber existing files.
- Added the
rake gem:freezetask and supporting requirarchy - Exception handling no longer baked into the dispatcher. Instead, you register exception handler mappings, with the same flexible request matching as mapping lambdas.
- New mapping filter
always. Like the ensure in a rescue clause.alwaysalways runs. - New mapping helper method
root. For, you know, ”/”. - New mapping method
clearto remove all mappings - Can now send any 3xx status on redirect (instead of only 302)
- Added the blackboard, simple shared storage usable during request processing
Changes and Backwards Incompatibilities
- Sequel adapter in generated application defaults to sqlite. Can be changed in configurations/development.rb where the database attribute is defined.
- The framework is now loaded by requiring startup.rb
- Default model, controller, view, and helper are auto_created from the framework, instead of generated as files in the application. Developers can define their own default classes in the appropriate places.
- Developers should define rake tasks in lib/tasks, instead of the main Rakefile, as we reserve the right to change it.
- lib/{your_app_name}.rb no longer used, as its functionality has been pulled into the framework. The loose equivalent is lib/application.rb, which establishes the application module and includes foundations and layers as needed.
Known Issues
- The rake generate:model task got lost in the woods. Matthew is out hassling the the neighborhood witch right now.
Developers
- Dan Yoder
- Pascal Belloncle
- Lawrence Pit
- Matthew King
Thanks to
- ab5tract
- Jerry West
- Keiichi Matsunaga
- Johan Friis
- Pete Elmore