Archive for March, 2008

The First Month

Thursday, March 27th, 2008

It dawned on me today as I released 0.4.1 that’s it has been one month since the first release, 0.0.4. What a month it’s been! When 0.0.4 got released I hadn’t been working on Mack for more than a few weeks. So really, Mack has been going for about six weeks now. It’s funny to think how far the code has progressed, how many features have been developed, and most importantly, how much attention it’s received.

Firsts:

  • First Bug: Matt Todd found the first bug with a Mack. It was a simple bug with convert_security_of_methods the second parameter wasn’t being used. Matt has since become a good friend of Mack, and has a couple of other firsts on this list.
  • First Blog Comment: Mr. Eel questioning the validatey of some rough DataMapper vs. ActiveRecord numbers I posted.
  • First Link to Mack: Matt Todd gets his second ‘first’ of this list.
  • First ‘Demo’ Request: Gregg Pollack from RailsEnvy.com requested a demo app so he could feature Mack on the RailsEnvy.com podcast.
  • First Podcast: I think this one is fairly obvious, but it goes to the RailsEnvy.com guys. Thanks for the press!
  • First Speaking Request: Tom Dyer/Boston Ruby Users Group. I’ll be speaking May 13th on the joys of Mack.
  • First Request to Contribute: Arun Agrawal.
  • First Tech Support Request: Brian Dunbar. He had some trouble running the demo app. Turns out it was a bad require in the cachetastic gem, that I subsequently fixed.
  • First ‘Watcher’ on GitHub.com: Once again, Mr. Matt Todd! Gotta love the Matt.
  • First Fork on GitHub.com: Kabari Hendrick. Based out of Chicago, http://www.threedozen.com/, I’m excited to see what he does with his fork.

Wow! That’s a lot of firsts for a first month. Here’s a list of some of the features that have been released in that time:

  • Distributed Routes!
  • Better testing support
  • Built-in encryption/decryption
  • XML support
  • A Generator framework
  • ‘Scaffold’ generator
  • Plugin support
  • Server-side redirects
  • Inflection
  • Render url
  • Extensible rendering system
  • ‘Format’ driven content

That’s just a few things that have gone in there. That’s not to mention refactoring, documentation, demo apps, etc…

I’d like to this time to say thank you to everyone on the ‘firsts’ lists. I would like to thank everyone else who’s shown interest, commented, wrote about, or even just thought of Mack. Every comment on the site, every email I get, every blog link I see fills me with great happiness and makes me think that I’m on to something here.

I truly feel that there is a void for a Ruby web framework that deals with distributed, portal-like applications, and that’s where Mack is headed. That’s what makes Mack different from Rails or Merb or Ramaze or Sinatra or any other framework out there.

What’s on the horizon for Mack? A lot. I’m going to be speaking at the Boston Ruby Users Group on May 13th. Of course, I’ll be showing off Mack, so if you’re in town, I would recommend coming on down. Details on that as we get closer to the event. You can expect more app to app communication, more generators, more ORM support, more testing support, page caching, ‘portlets’, and much much more!

Once again, thanks to everyone for their support. I’m looking forward to see what the future holds.

Release 0.4.1

Thursday, March 27th, 2008

On the heels of yesterdays release of 0.4.0, there is a new release today, 0.4.1. Although this is not a sexy release, as 0.4.0 was, this is an important release.

What makes this release so important is that it fixes, adds, or improves testing support for Mack applications.

The implementation of some of the testing stuff has changed under the covers, but it’s the new stuff that is really important. let’s take a look at some of the stuff:

  • assigns(key) – This one should be familiar to all you Rails folks out there. This allows you to get an instance variable that was set in a controller, and access it in your test.
    def test_something
      get foo_index_url
      assert_not_nil assigns(:foo_list)
    end
  • in_session – This methods allows you to wrap a block in the context of a session. This is great if you’re trying to do integration testing.
  • set_cookie, remove_cookie – These methods allow you to either set or a remove a cookie in your tests. Great if you want to test an action that reads a cookie, or test to see what happens if you set a cookie, then remove the cookie and call something else. Also great to use with the in_session method.

There are a few other hidden treats in there, but those are some of the highlights. These things help bring Mack testing to a usable level.

The Mack Demo Blog application has been updated to demonstrate some these things. You can pull the demo using Git here: git://github.com/markbates/mack_blog_demo.git

Changelog:

  • Improved testing support.
  • Added assigns support to testing. This is allows for pulling instance variables that were set in a controller to tests.
  • Added ability to do ‘session’ based tests.
  • Added assert_difference method.
  • Added ability to set/remove cookies before requests are made.
  • gem: mack_ruby_core_extensions 0.1.4
$ sudo gem install mack

Release 0.4.0

Wednesday, March 26th, 2008

It’s finally here! The release you’ve all been waiting for, 0.4.0!! What’s new in this one? Well, the big one, DISTRIBUTED ROUTING!!! Now you can share your routes between all of your Mack applications.

I’m very excited about this release. This is one of the first features that starts to set Mack apart from other Ruby frameworks such as Rails and Merb.  Mack is trying to set itself as the framework for doing multiple, distributed, portal applications. This release gets us headed in that direction.

There will be a tutorial post and app in the next few days. In the meantime I highly encourage you to download this release and check it out.

Changelog:

  • Added Distributed Routes!
  • gem: mack_ruby_core_extensions 0.1.3
  • removed gem: ruby_extensions
$ sudo gem install mack

Trac

Wednesday, March 26th, 2008

So after trying to use Trac for a few weeks now, I’ve decided that right now it’s just slowing me down. Particularly when dealing with roadmaps, etc… So for now, if you find bugs, want to contribute, or you just have questions, simply visit the contribute page on this site and send me an email.

As things progress and there are more contributors, and more people using Mack, this may all change. Until then…

Announcing Mack Ruby Core Extensions

Wednesday, March 26th, 2008

Mack has been using a combination of the ruby_extensions gem as well some local extensions to the Ruby core in order to make Mack as wonderful as it is. In an effort to make life a little simpler, as well as to help share the wealth, the ruby_extensions gem and the Mack extensions have been combined into a single new gem called mack_ruby_core_extensions.

One of the main Mack pieces that has been broken out into this new gem is the inflection system. Now you can have inflections as part of any Ruby application just by requiring the gem. As far as I can tell this is the first stand alone inflection system for Ruby. I know because I couldn’t find one for Mack, that’s why I had to write one.

This gem will continually be updated, outside of the core Mack code. The forthcoming release of Mack, 0.4.0, will be converted to use the new gem.

Those who wish to contribute to the gem can find it on GitHub at: http://github.com/markbates/mack_ruby_core_extensions

The API for mack_ruby_core_extensions can be found at:
http://mrce-api.mackframework.com/

 $ sudo gem install mack_ruby_core_extensions