Release 2012.03.07

Today marks the day of another Ramaze release, Ramaze 2012.03.07. With this release also comes a new version of Innate, also 2012.03. A full list of the changes of both frameworks can be found below.

However, there is one important change that you should be aware of: Ramaze is no longer dual licensed under the GPL/Ruby licenses but instead is now licensed under the MIT license. This license gives more freedom and is a lot easier to understand. For those interested the conversation that started the idea of changing the license can be found here: https://gist.github.com/1664358.

Changelog for Ramaze

  • Various documentation improvements, massive thanks to John Pagonis for his contributions.
  • CSRF tokens are re-generated on valid requests. This fixes the problem of these tokens being invalidated after 15 minutes regardless of valid requests being executed or not.
  • View adapters automatically install required Gems using Ramaze.setup().
  • Support for the Slim template engine thanks to Marc Weber.
  • Various small code cleanups such as the removal of trailing whitespace, YARD formatting issues, etc.

Changelog for Innate

  • Fixed various YARD formatting issues.
  • The render helper can now render views that don't have corresponding methods when the trait :needs_method is set to true. This means that for example render_view(:foo) works if there's a view "foo" but not method "foo()". Previously doing this would trigger an error saying the render call required a method.
  • Fixed an issue for Rack::Cascade in Rack 1.4.1.
  • The speed of Innate::Cache has been improved and should trigger less warnings.

Upcoming Changes

With this blog post I'd also like to announce some upcoming changes in both Innate and Ramaze. Earlier today Michael managed to make some patches for Innate that resulted in a massive performance increase (from 300 reqs/sec to around 2000).

However, for this patch to be pulled into Innate various changes have to be made which in turn would lead to Innate using more than 2k LOC. To work around this we've been thinking of throwing a few things (that were annoying in the first place) away. These are Innate::Session and the middleware compiler. The former isn't a huge issue as Rack already has a perfectly fine way of handling sessions. The latter however is a very big change and will break a lot of existing applications out there, hence this announcement.

The removal of the middleware compiler would mean that all the methods related to "compiling" the middleware list (methods such as Innate.middleware!) will be removed, thus breaking existing code that relies on the presence of these methods.

The advantage of this is that both Innate and Ramaze will instead use the code provided by Rack, thus making it easier for us to maintain both frameworks as well as making it easier for others to use Rack middlewares without having to learn how to use the middleware compiler.

While none of these changes have been pushed to Github yet it's more than likely that this will happen in the near future as we agreed that such big performance improvements were worth the effort of breaking existing code. Once we have determined in which version these changes will be included I'll send another email to notify developers so that they can prepare themselves and their projects.