<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Meta Bates &#187; active record</title>
	<atom:link href="http://www.metabates.com/tag/active-record/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.metabates.com</link>
	<description>The technical ramblings of Mark Bates.</description>
	<lastBuildDate>Wed, 01 Feb 2012 16:25:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Because everybody has an opinion&#8230;</title>
		<link>http://www.metabates.com/2011/04/15/because-everybody-has-an-opinion/</link>
		<comments>http://www.metabates.com/2011/04/15/because-everybody-has-an-opinion/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 01:30:20 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[coffee script]]></category>
		<category><![CDATA[erb]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.metabates.com/?p=430</guid>
		<description><![CDATA[In case you&#8217;ve been living in a cave this week you&#8217;ve probably heard that Ruby on Rails is going to be including both the CoffeeScript and SASS libraries, it will also make jQuery the default JavaScript framework, replacing the Prototype framework. I would like to start by addressing my experiences with CoffeeScript. My opinion of [...]]]></description>
			<content:encoded><![CDATA[<p>In case you&#8217;ve been living in a cave this week you&#8217;ve probably heard that <a href="http://www.rubyinside.com/rails-3-1-adopts-coffeescript-jquery-sass-and-controversy-4669.html">Ruby on Rails</a> is going to be including both the <a href="http://coffeescript.org/">CoffeeScript</a> and <a href="http://sass-lang.com/">SASS</a> libraries, it will also make <a href="http://jquery.com/">jQuery</a> the default JavaScript framework, replacing the <a href="http://www.prototypejs.org/">Prototype</a> framework.</p>
<p>I would like to start by addressing my experiences with CoffeeScript. My opinion of it is of ambivalence. I&#8217;ve used it on a project, I&#8217;ve played with and in the end I&#8217;ve come out with the opinion of &#8220;it&#8217;s ok&#8221;. It didn&#8217;t blow me away, but at the same time I can see why so many people like. It offers some really cool features that I really wish JavaScript had and you can cut down on the amount of code you have to write. On the other hand the apps I tend to write don&#8217;t tend to be that JavaScript heavy that I really needed to reach out for something like CoffeeScript.</p>
<p><img class="alignleft" src="http://blogs.worldbank.org/files/publicsphere/public%20opinion_JGRNLY.jpeg" alt="" width="326" height="246" />So, how do I feel about CoffeeScript being included with Rails? Well, I&#8217;ll get to that. Let&#8217;s go over some of the most common arguments I&#8217;ve heard from people this week about why they&#8217;re anti-CoffeeScript in Rails.</p>
<blockquote><p>&#8220;It&#8217;s an abstraction layer of JavaScript! JavaScript isn&#8217;t that bad, why can&#8217;t you just write JavaScript?&#8221;</p>
<p>&#8220;It&#8217;s going to be a hinderance to newbies. It&#8217;ll be too much of a learning curve!&#8221;</p></blockquote>
<p>Let&#8217;s start with that second point first, shall we? I agree, it does represent a new element that needs to be learned when coming to Rails. But here&#8217;s the pretty nifty thing about how it&#8217;s all implemented in Rails. In order to actually use CoffeeScript in Rails you have to create your files named foo.js.coffee if, however, you just name your file foo.js then, guess what? You will have to write plain old JavaScript! Seems like newbies, and those who don&#8217;t like CoffeeScript, can just keep writing plain old JavaScript without anything stopping them at all.</p>
<p>Now, let&#8217;s talk about the abstraction layer argument. Yes, CoffeeScript is an abstraction on top of JavaScript, but let&#8217;s take a look at a few other parts of the Rails stack and see how they hold up against this argument.</p>
<p>Here&#8217;s a fairly common Rails stack:</p>
<ul>
<li>ActiveRecord</li>
<li>Haml</li>
<li>jQuery</li>
<li>RSpec</li>
</ul>
<p>What do all those things have in common? Well, they&#8217;re all abstraction layers that sit on top of something else, don&#8217;t they? Let&#8217;s look at that list again?</p>
<ul>
<li>ActiveRecord &#8211; SQL (Structured Query Language)</li>
<li>Haml &#8211; HTML</li>
<li>jQuery &#8211; JavaScript, you could just as easily hand roll those AJAX calls in pure JavaScript.</li>
<li>RSpec &#8211; Test/Unit</li>
</ul>
<p>What I&#8217;ve found funny about the particular argument is that I&#8217;ve heard it MOST from those who use things like HAML, which is a DEFINITELY an abstraction layer that sits on top of HTML. See where I&#8217;m going with this one? Good, I don&#8217;t want to belabor the point. <img src='http://www.metabates.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So, finally, where do I stand on this whole thing? Well, I view like it Test/Unit and Prototype. Those are both the current standard (although jQuery will replace Prototype in 3.1) and I don&#8217;t like or use either of them. Instead I configure Rails to use jQuery and RSpec. I don&#8217;t like Haml, but those that do simply replace ERB with Haml and they move on with their day. So my take is this, it&#8217;s there, it&#8217;s included. Use it if you like, or don&#8217;t. Is it really that big a deal? No, it really isn&#8217;t. If Rails dropped ERB and went with Haml as the default, would I bitch and moan, probably a bit, but then I&#8217;d just install the Rails-ERB gem and move on with my day, just like I do with jQuery and RSpec today.</p>
<p>So sit back, relax, use the libraries that you want to use, Rails let&#8217;s you do that. Oh, while you&#8217;re relaxing why not try out CoffeeScript, who knows, you might just enjoy it. Or not.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2011/04/15/because-everybody-has-an-opinion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby 1.9 &amp; Rails 3.0</title>
		<link>http://www.metabates.com/2010/02/08/ruby-1-9-rails-3-0/</link>
		<comments>http://www.metabates.com/2010/02/08/ruby-1-9-rails-3-0/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 15:06:27 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.metabates.com/?p=313</guid>
		<description><![CDATA[I&#8217;ve always been a big proponent of Ruby 1.9, I make no bones about it. My question is why wouldn&#8217;t you be? It&#8217;s faster, more powerful, easier to use, and makes things a lot clearer and cleaner than 1.8. So why then are pretty much all of us still running our applications on 1.8.x? Great [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always been a big proponent of Ruby 1.9, I make no bones about it. My question is why wouldn&#8217;t you be? It&#8217;s faster, more powerful, easier to use, and makes things a lot clearer and cleaner than 1.8. So why then are pretty much all of us still running our applications on 1.8.x? Great question, and as far as I can tell there is really only 1 answer.</p>
<p>That answer? Because no one else is. It&#8217;s stupid really, but it&#8217;s the truth. We&#8217;re all afraid to run our applications in 1.9 because we don&#8217;t know many other people that are. Because of that it makes it hard for you to make your application work with 1.9 because all those gems and libraries  you use aren&#8217;t 1.9 compatible, so you&#8217;re forced to keep running your app on 1.8. And so the cycle continues.</p>
<p>Enter Rails 3.0. Here is a major upgrade to the most prominent web framework in the Ruby community, and I would argue the reason that most of us got into Ruby in the first place. This upgrade will force us all to make some pretty severe changes to our applications to make them fully compatible.  The changes in ActiveRecord alone are so sweeping and massive that we, as a community, are going to have to put some serious time into upgrade our applications. Yet, despite this, we are all going to do it.</p>
<p>Why are we all going to upgrade to Rails 3.0? Because it  looks cool and sexy, and we want those great new features and all those performance enhancements to make our applications run faster. Which leads me back to Ruby 1.9.</p>
<p>In Rails 3.0 they are dropping support for Ruby 1.8.6 and below in favor of Ruby &gt;1.8.7 and &gt;1.9.1. I propose that Rails 3.0 becomes Ruby 1.9 compatible only. Think about it. What a perfect opportunity for us all. We are all going to have to upgrade the libraries and gems we maintain to support Rails 3.0 and we are going to be upgrading our applications to Rails 3.0, so why not go full steam into Ruby 1.9?</p>
<p>There is no better time than now to push forward into the future as a whole community. Let&#8217;s put Ruby 1.8 behind and reap the benefits of what Ruby 1.9 has to offer. What do you say? Can we do it? I think we can.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2010/02/08/ruby-1-9-rails-3-0/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Cachetastic 3.0.0 Released</title>
		<link>http://www.metabates.com/2009/06/18/cachetastic-3-0-0-released/</link>
		<comments>http://www.metabates.com/2009/06/18/cachetastic-3-0-0-released/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 02:07:10 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[cachetastic]]></category>
		<category><![CDATA[configatron]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.metabates.com/?p=237</guid>
		<description><![CDATA[After more than two years powering production level applications I found that Cachetastic was starting to get a bit long in the tooth. I felt that there was a lot I could to make Cachetastic an even better library than it already was. I thought that I had added a bunch of cruft to the [...]]]></description>
			<content:encoded><![CDATA[<p>After more than two years powering production level applications I found that Cachetastic was starting to get a bit long in the tooth. I felt that there was a lot I could to make Cachetastic an even better library than it already was. I thought that I had added a bunch of cruft to the framework that people were just not using and maintaining it all seemed like a bit of a pointless chore.</p>
<p>So what was I unhappy about?</p>
<h3>Configuration:</h3>
<p>I was pretty unhappy with the way configuration was being done. I liked using Configatron to power the configuration, but I didn&#8217;t like the way I implemented the way I was using Configatron. For example, to set up one of the default settings, like the expiry time, you would configure it like such:</p>
<pre>configatron.cachetastic_default_options.expiry_time = 30.minutes</pre>
<p>Now you would configure that same option like this:</p>
<pre>configatron.cachetastic.defaults.expiry_time = 30.minutes</pre>
<p>That&#8217;s a little savings, but it really hits when you want to configure a particular cache. Let&#8217;s say we a cache called My::Super::AwesomeCache, to configure it in past versions of Cachetastic we would do this:</p>
<pre>configatron.my_super_awesome_cache_options.expiry_time = 15.minutes</pre>
<p>Now in Cachetastic 3.0.0 we configure like this:</p>
<pre>configatron.cachetastic.my.super.awesome_cache.expire_time = 15.minutes.</pre>
<p>As you can see all configuration now happens under the cachetastic namespace in Configatron. Then it&#8217;s a matter of using a Configatron namespace for each of your modules. I find it a lot easier to manage.</p>
<p>Another change in configuration is that in previous versions if you wanted to override one default configuration value for a particular cache,  you had to override them all. Now, you can just override the one value  you want, and the rest will be nicely inherited from the defaults.</p>
<h3>Speed</h3>
<p>Cachetastic has always been a very fast library, but I knew that more could be squeezed from that stone. With Cachetastic 3.0.0 you now get a hefty 25% improvement in the Memcached adapter and a whopping 99% in the LocalMemory adapter! Those are pretty awesome numbers. These numbers were easy to achieve when I stepped back and examined what it was I really wanted to do, and picked the most straightforward path to that goal.</p>
<h3>Bloat</h3>
<p>After more than two years Cachetastic was starting to suffer from a severe case of bloat. For example, I&#8217;ve never used the DRb adapter, have you? So why is it there? The same goes for the HtmlFile adapter. I wrote that because at my last job the operations team weren&#8217;t savvy  enough to be able to get Apache to talk to Memcached, so they wanted to serve HTML files, hence the rather awful adapter. Both of those adapters are now history.</p>
<p>There also used to be support for Rails Session Caching. Considering that most people are now using the Cookie store for sessions, there really is no need for this cache. It could also be argued that it should not have been bundled with Cachetastic at all. I would agree with those arguments. Cachetastic is, and should always be, a standalone caching framework, that can be plugged into Rails or any plain old Ruby project that needs caching support.</p>
<p>Also purged is automatic support for mixing in the Cachetastic::Cacheable module into ActiveRecord. If you want this functionality, it is very easy to include in your application. I don&#8217;t want to force it on anyone, so that is gone now.</p>
<p>Finally there are a handful of smaller features that I&#8217;m sure no one will miss that I&#8217;ve yanked out in the name of performance, reliability, and ease of maintenance.</p>
<h3>Nice and Clean</h3>
<p>When I realized what I really wanted, and what I didn&#8217;t want, it became clear that what was needed was a fresh code base. With that said, I hit delete (well, not really) and started over again. The code is now smooth, so much easier to read, and fast. In previous versions even my eyes went a bit crossed when I tried to figure out exactly what was going on. There where quite a few levels of indirection, and things just weren&#8217;t place where they probably should&#8217;ve been. That has all been fixed.</p>
<p>With a nice, clean code base comes a brand new set of tests. The tests are now extremely comprehensive, and while 2.x was very well tested, I know that 3.0.0, is tested to the hilt.</p>
<p>Because 3.0.0 is a brand new code base, I should probably stress the fact that is <strong>NOT</strong> backward compatible. So please be advised.</p>
<h3>Installation:</h3>
<pre>$ sudo gem install cachetastic</pre>
<h3>Conclusion</h3>
<p>I really hope everyone likes this brand new version of Cachetastic. I&#8217;m very happy with it, and I think if you give it a chance, you will be too.</p>
<p>If you&#8217;d like to have a peek at the RDoc, it can be found at:<br />
<a href="http://cachetastic-api.mackframework.com/">http://cachetastic-api.mackframework.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2009/06/18/cachetastic-3-0-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 0.8.2</title>
		<link>http://www.metabates.com/2008/11/30/release-082/</link>
		<comments>http://www.metabates.com/2008/11/30/release-082/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 02:57:12 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[addressable]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[deferred? routes]]></category>
		<category><![CDATA[ebb]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Ezra Zygmuntowicz]]></category>
		<category><![CDATA[facets]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[thin]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=206</guid>
		<description><![CDATA[Hey there folks, sorry for the long wait for this release, but it&#8217;s here. It&#8217;s been a long November for yours truly. I&#8217;ve had to find a new job. I&#8217;ve had pneumonia. We, at least in America, have celebrated Thanksgiving. And, of course, who can forget RubyConf 2008? So with that said, what&#8217;s in 0.8.2? [...]]]></description>
			<content:encoded><![CDATA[<p>Hey there folks, sorry for the long wait for this release, but it&#8217;s here. It&#8217;s been a long November for yours truly. I&#8217;ve had to find a new job. I&#8217;ve had pneumonia. We, at least in America, have celebrated Thanksgiving. And, of course, who can forget RubyConf 2008?</p>
<p>So with that said, what&#8217;s in 0.8.2? Honestly, not a whole lot. There are a couple of bug fixes, a button_to_remote (think submit_to_remote in Rails) helper, and deferred routes. More on deferred routes in a moment, as it&#8217;s actually a pretty cool feature that only Mack and Merb share. And finally there is bundled gems.</p>
<h3>Bundled Gems</h3>
<p>What do I mean I say &#8216;bundled gems&#8217;? Well, because of the rather large number of gems that get installed with Mack, and because of some gem version dependency issues, Mack is now bundling it&#8217;s third party dependency gems inside itself. For example, mack-facets used to rely on the gems &#8216;facets&#8217; and &#8216;english&#8217;. Those gems are now bundled inside the mack-facets gem and now longer need to be downloaded and installed by end users. This should make installing Mack super easy. It should also make dealing with having multiple versions of Mack installed on your system easier to deal with and maintain.</p>
<h3>Deferred? Routes</h3>
<p>So what are deferred routes? Ezra wrote a really great write up back in <a href="http://brainspl.at/articles/2008/04/18/deferred-requests-with-merb-ebb-and-thin" target="_blank">April</a>. The idea is simple, with newer web servers such as Thin and Ebb, you can tell them to spawn a new thread to handle particular requests, such as long running processes like file uploads. This can really help speed things up as server can process regular requests using an event machine model, which is very fast, but can be really slow and block the server for longer processes. Now those processes can spawn into their own threads and not block the server.</p>
<p>In Mack 0.8.2 you can mark your routes with a deferred? =&gt; true option which will trigger this behavior. It&#8217;s much more advanced than the similar feature that can be found in Merb, which requires a separate configuration for your deferred actions, and the urls have to be &#8216;hard coded&#8217;. Mack let&#8217;s you use all the dynamic power of your routes, like you would want to. It&#8217;s just another option on the route itself. For a great tutorial on using deferred routes, check out the following page on www.mackery.com:</p>
<p><a href="http://www.mackery.com/routing/deferred_routes">http://www.mackery.com/routing/deferred_routes</a></p>
<h3>Upgraded Dependencies</h3>
<p>A few gems have been upgraded as part of this release, the big ones include DataMapper to 0.9.7, ActiveRecord to 2.2.2, and Haml to 2.0.4.</p>
<p>Changelog:</p>
<ul>
<li>[#237] Fixed render :rjs throws errors</li>
<li>[#236] Upgraded to ActiveRecord 2.2.2</li>
<li>[#235] Upgraded to DataMapper 0.9.7</li>
<li>[#230] Upgraded to facets 2.4.5</li>
<li>[#229] Upgraded to english 0.3.1</li>
<li>[#227] Removed WEBrick logging</li>
<li>[#226] Bundled gems.</li>
<li>[#225] Removed dependency on Thin</li>
<li>[#223] Fixed mackery console fails</li>
<li>[#148] Added button_to_remote helper method.</li>
<li>[#16] Added deferred? routes.</li>
<li>gem: active_record 2.2.2</li>
<li>gem: data_mapper 0.9.7</li>
<li>gem: addressable 2.0.0</li>
<li>gem: facets 2.4.5</li>
<li>gem: english 0.3.1</li>
<li>gem: rspec 1.1.11</li>
<li>gem: haml 2.0.4</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/11/30/release-082/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Release 0.6.0</title>
		<link>http://www.metabates.com/2008/07/16/release-060/</link>
		<comments>http://www.metabates.com/2008/07/16/release-060/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 14:04:22 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[darsono sutedja]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[haml]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[mack-more]]></category>
		<category><![CDATA[markaby]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=110</guid>
		<description><![CDATA[Well, it&#8217;s finally here, Mack 0.6.0! This release has taken a long time, but I feel that it&#8217;s definitely worth it. This has to be the best release of Mack to date. During this release the Mack dev team grew by 100%, Darsono Sutedja, previously a contributor to Mack, is now a full time Mack [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it&#8217;s finally here, Mack 0.6.0! This release has taken a long time, but I feel that it&#8217;s definitely worth it. This has to be the best release of Mack to date. During this release the Mack dev team grew by 100%, Darsono Sutedja, previously a contributor to Mack, is now a full time Mack core team developer! Darsono has done an absolutely great job on this release, thanks Darsono. With that out of the way, let&#8217;s jump straight to the good stuff, shall we?</p>
<h3>DataMapper 0.9.2 Support</h3>
<p>At long last Mack supports DataMapper 0.9.2. Because previous versions of Mack used DataMapper 0.3.2, there is some upgrade work that you&#8217;ll need to do, but trust me, it&#8217;s worth it. DataMapper 0.9.2 is a gigantic leap forward from 0.3.2. If you have problems installing the data_mapper gem, make sure that you don&#8217;t have gems.datamapper.org in your source path for rubygems. You can remove it with the following command:</p>
<pre>gem source -r http://gems.datamapper.orgÂ </pre>
<h3>RSpec Testing Support</h3>
<p>RSpec is now the default testing framework for new Mack applications. This innovative testing framework makes it fun, and simple, to do behavior driven development. If you haven&#8217;t yet played with RSpec, I would highly recommend it. I wasn&#8217;t a big fan of &#8216;spec&#8217; testing prior to meeting Adam French, of DataMapper fame, and he turned me on to the joys of rspec. I think you&#8217;ll like it too, if you give it a chance. <img src='http://www.metabates.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>mack-more</h3>
<p>There is now a mack-more package. This will house all the optional gems available to the Mack framework. This include things like HAML and Markaby support, localization, etc&#8230; Use what you want, ignore the rest. This will help keep the core code clean, light, and of course, fast.</p>
<h3>Localization/l10n Support</h3>
<p>Darsono did a great job with the mack-localization gem. There is now optional support for internationalization in Mack applications. Check out the gem, it&#8217;s definitely worth it if you need to support multiple languages for your web application.</p>
<h3>Much, much more!</h3>
<p>Of course, there&#8217;s a lot more Mack than the stuff I just mentioned, there&#8217;s tons of bug fixes, some code clean up, some API changes, transactional testing support, the ability to catch specific errors in routes and have them diverted to a controller/action for handling.</p>
<p>There is a great wiki entry on upgrading your existing Mack project to 0.6.0 <a href="http://wiki.mackframework.com/index.php/en/Upgrading%20from%200.5.x%20to%200.6.x" target="_blank">here</a>. I highly recommend reading it whether or not you have an existing Mack application.</p>
<p>With this release the Mack team is also fully embracing Lighthouse. If you find bugs, or have suggestions please visit <a href="http://lighthouse.mackframework.com" target="_blank">http://lighthouse.mackframework.com</a>Â and log them there. You&#8217;ll also find the list of features that will eventually be added to Mack.</p>
<p>Changelog:</p>
<ul>
<li>INCOMPATIBILITY NOTICE: Moved Mack::Configuration.root to Mack.root</li>
<li>INCOMPATIBILITY NOTICE: Moved Mack::Configuration.env to Mack.env</li>
<li>INCOMPATIBILITY NOTICE: Mack::Configuration.* path methods no longer exist. Use mack-paths instead.</li>
<li>INCOMPATIBILITY NOTICE: Dropped mack_ruby_core_extensions in favor or mack-facets</li>
<li>INCOMPATIBILITY NOTICE: Mack::Controller::Base is now Mack::Controller (and it&#8217;s now a module)</li>
<li>INCOMPATIBILITY NOTICE: Haml renderer is now part of mack-more.</li>
<li>INCOMPATIBILITY NOTICE: Markaby renderer is now part of mack-more.</li>
<li>INCOMPATIBILITY NOTICE: Changed request param&#8217;s accessor routine, from params(key) to params[key]</li>
<li>INCOMPATIBILITY NOTICE: Test::Unit::TestCase is no longer the default testing framework, RSpec is. If you wish to useÂ Test::Unit::TestCase add the following config parameter to your config/app_config/default.yml file:<br />
Â Â mack::testing_framework: test_case</li>
<li>INCOMPATIBILITY NOTICE: ENV["_mack_env"] and ENV["_mack_root"] are no longer supported, please use ENV["MACK_ENV"] and ENV["MACK_ROOT"], or just Mack.env and Mack.root</li>
<li>INCOMPATIBILITY NOTICE: MACK_DEFAULT_LOGGER constant is no longer available. Please use Mack.logger instead.</li>
<li>INCOMPATIBILITY NOTICE: The ApplicationHelper module is now deprecated. Please move view level helpers into Mack::ViewHelpers::* and controller helpers into Mack::ControllerHelpers::&lt;controller_name&gt;</li>
<li>thin.ru and thin.yml are no longer needed, you may delete them.</li>
<li>RSpec assertions are now automatically added.</li>
<li>Added a Mack::Testing::Response class to make testing of responses easier.</li>
<li>moved test_extensions to testing and added the module Testing to the files in it.</li>
<li>Added a dependency on mack-more</li>
<li>Added a set of Rake tasks to update existing Mack applications.</li>
<li>[#30] Added Mack::Logging::Filter to filter out unwanted parameters from the logs.</li>
<li>In routing you can now define a route that will catch an Exception from another controller.</li>
<li>ORM will not be initialized if the app never specify which ORM to use.</li>
<li>All Mack unit tests are now written using rspec-1.1.4.</li>
<li>mack command now takes an optional -t flag to determine which testing framework to use&#8211;value could be test_case or rspec [default]</li>
<li>new setting added to app_config: testing_framework</li>
<li>gem: cachetastic 1.7.2</li>
<li>gem: application_configuration 1.5.0</li>
<li>gem: erubis 2.6.2</li>
<li>gem: genosaurus 1.2.1</li>
<li>gem: thin 0.8.2</li>
<li>gem: rspec 1.1.4</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/07/16/release-060/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ORMs and Mack</title>
		<link>http://www.metabates.com/2008/05/04/orms-and-mack/</link>
		<comments>http://www.metabates.com/2008/05/04/orms-and-mack/#comments</comments>
		<pubDate>Sun, 04 May 2008 15:29:35 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[github.com]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[sequel]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=89</guid>
		<description><![CDATA[So a lot has been made in the last few days about my decision to drop ActiveRecord&#8217;s native support in Mack. People have asked why can&#8217;t I keep what I already have in regards to support for ActiveRecord, and why can&#8217;t I support Sequel. So, I&#8217;ve decided to compromise. In the next version of Mack, [...]]]></description>
			<content:encoded><![CDATA[<p>So a lot has been made in the last few days about my decision to drop ActiveRecord&#8217;s native support in <a href="http://www.mackframework.com/2008/05/01/saying-goodbye-to-activerecord/" target="_blank">Mack</a>. People have asked why can&#8217;t I keep what I already have in regards to support for ActiveRecord, and why can&#8217;t I support Sequel. So, I&#8217;ve decided to compromise.</p>
<p>In the next version of Mack, which should be out in the next day or two, I&#8217;ve broken out support for ActiveRecord and DataMapper into their own gems,Â <a href="http://github.com/markbates/mack-orm/tree/master" target="_blank">http://github.com/markbates/mack-orm/tree/master</a>. That means you&#8217;ll be able to still use ActiveRecord, if you want. The default ORM, however, will be DataMapper. That&#8217;s what you&#8217;ll get out of the box with Mack.</p>
<p>Now, keeping with my original post, I&#8217;ll be actively maintaining the mack-data_mapper gem, and when I can I&#8217;ll make similar changes to the mack-active_record, but I&#8217;m not promising anything. Now the good thing here is that since the repos for these gems are on GitHub, anyone can contribute changes/additions to them. I&#8217;ve even put a stub in there for Sequel support, that&#8217;s definitely something someone else will have to support.</p>
<p>This also has a nice advantage in keeping the Mack core clean and simple. Hopefully this will all lead to faster development time turn around for Mack.</p>
<p>It&#8217;s also worth noting that when I talk about &#8216;native&#8217; support, all I mean is some Rake tasks and some generators. There&#8217;s nothing stopping anyone from using ANY ORM with Mack. You could even create your own, if you really wanted to.</p>
<p>Here&#8217;s to hoping this makes everyone happy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/05/04/orms-and-mack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Commit Access</title>
		<link>http://www.metabates.com/2008/05/02/commit-access/</link>
		<comments>http://www.metabates.com/2008/05/02/commit-access/#comments</comments>
		<pubDate>Sat, 03 May 2008 03:19:36 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[github.com]]></category>
		<category><![CDATA[mack]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=88</guid>
		<description><![CDATA[So after my post about dropping ActiveRecord for DataMapper, I&#8217;ve received some very interesting feedback, mostly good, which is great. The best comment I received was from Sam Smoot, lead developer of DataMapper. Sam offered to give me commit access to the DataMapper repos on GitHub. I took Sam up on his offer and I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>So after my post about dropping ActiveRecord for DataMapper, I&#8217;ve received some very interesting feedback, mostly good, which is great. The best comment I received was from Sam Smoot, lead developer of DataMapper. Sam offered to give me commit access to the DataMapper repos on GitHub.</p>
<p>I took Sam up on his offer and I&#8217;ve already made several contributions. This is GREAT news for the Mack Framework. When the best technologies start working in concert, only good things can happen.</p>
<p>I&#8217;m really excited about what&#8217;s happening with DataMapper 0.9.0, and I know it&#8217;s only going to make Mack a better framework. I&#8217;ve already started working on upgrading Mack to use, the yet unreleased, DataMapper 0.9.0 code base.</p>
<p>I&#8217;ll keep you all posted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/05/02/commit-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saying Goodbye to ActiveRecord</title>
		<link>http://www.metabates.com/2008/05/01/saying-goodbye-to-activerecord/</link>
		<comments>http://www.metabates.com/2008/05/01/saying-goodbye-to-activerecord/#comments</comments>
		<pubDate>Thu, 01 May 2008 21:07:00 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[orm]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=87</guid>
		<description><![CDATA[I&#8217;ve been wrestling with this for a while now, and I&#8217;ve finally made my peace with it. I&#8217;ve decided to remove native support for ActiveRecord from Mack. From now on it&#8217;ll be DataMapper by default, out of the box. This was not an easy decision to make. Essentially it boils down to one of the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been wrestling with this for a while now, and I&#8217;ve finally made my peace with it. I&#8217;ve decided to remove native support for ActiveRecord from Mack. From now on it&#8217;ll be DataMapper by default, out of the box. This was not an easy decision to make. Essentially it boils down to one of the key tenants of Mack, use the best of breed technologies to build a best of breed framework. I truly feel that DataMapper, especially when it hits the 0.9.0 release, is the best ORM, and persistence, system out there. I also feel that it is a natural fit for the Mack framework.</p>
<p>The other reason why I made the decision was time. It&#8217;s very time consuming to constantly maintain two different, and with 0.9.0 extremely different, ORMs. There are plenty of features that I could&#8217;ve done faster, had I only been supporting the one ORM.</p>
<p>Now I know I might come under fire from some people for this, but it&#8217;s a decision that I think is best for the framework. If some enterprising developer out there wants to build a plugin, or a gem, that adds ActiveRecord support, then I&#8217;m all for it! Please do!</p>
<p>The question you&#8217;re probably asking yourself now, is when will this be happening. It&#8217;ll be happening in the next release of Mack, probably the end of this week or the beginning of next week.</p>
<p>Again, I&#8217;m sorry for those of you were hoping to use ActiveRecord with Mack. Check out DataMapper, I&#8217;m sure you&#8217;ll be happy with it.</p>
<p>Comments?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/05/01/saying-goodbye-to-activerecord/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>0.4.6: The Obligatory &#8216;Blog&#8217; Demo &#8211; Take 2</title>
		<link>http://www.metabates.com/2008/04/18/046-the-obligatory-blog-demo-take-2/</link>
		<comments>http://www.metabates.com/2008/04/18/046-the-obligatory-blog-demo-take-2/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 22:12:04 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[post]]></category>
		<category><![CDATA[scaffold]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=60</guid>
		<description><![CDATA[This post has moved to the wiki @&#160;http://wiki.mackframework.com/index.php/Blog%20Tutorial]]></description>
			<content:encoded><![CDATA[<p>This post has moved to the wiki @&nbsp;<a href="http://wiki.mackframework.com/index.php/Blog%20Tutorial" target="_blank">http://wiki.mackframework.com/index.php/Blog%20Tutorial</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/04/18/046-the-obligatory-blog-demo-take-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release 0.4.5</title>
		<link>http://www.metabates.com/2008/04/14/release-045/</link>
		<comments>http://www.metabates.com/2008/04/14/release-045/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 20:37:32 +0000</pubDate>
		<dc:creator>Mark Bates</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Releases]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[active record]]></category>
		<category><![CDATA[data mapper]]></category>
		<category><![CDATA[drb]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[mack]]></category>
		<category><![CDATA[migrations]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[rinda]]></category>
		<category><![CDATA[routes]]></category>

		<guid isPermaLink="false">http://www.mackframework.com/?p=59</guid>
		<description><![CDATA[Well, here it is! The release you all were waiting for, the one that finally gives migration support to Mack! That&#8217;s right, now whether you use ActiveRecord or DataMapper, you can use the familiar rake task &#8216;db:migrate&#8217; to run your migrations. Yippie! The scaffold generator will also generate a migration for you, assuming you have [...]]]></description>
			<content:encoded><![CDATA[<p>Well, here it is! The release you all were waiting for, the one that finally gives migration support to Mack! That&#8217;s right, now whether you use ActiveRecord or DataMapper, you can use the familiar rake task &#8216;db:migrate&#8217; to run your migrations. Yippie! The scaffold generator will also generate a migration for you, assuming you have ORM support enabled.</p>
<p>There&#8217;s still some work to go on this, like the ability to pass in command line args to the task to build the full migration for you, but it&#8217;s a start! It&#8217;s now pretty easy to get your app going.</p>
<p>Also in this release is a rewrite of the distributed routing functionality. It&#8217;s now been rewritten to use Rinda. This is going to be the standard for all the distributed functionality that will be coming Mack over the next couple of months. As more functionality lke this is developed, the more it will be wrapped in nice, easy to use APIs.</p>
<p>There&#8217;s also been some tidying up here in there in the code tree. For example, new applications don&#8217;t get generated with a boot.rb file. Looking at it, there&#8217;s really no need for it, since everything is done with Rake tasks.</p>
<p>Overall, I&#8217;m very happy with the release, and I feel that this release definitely makes Mack a VERY useable framework because of the migration support. Enjoy!</p>
<p>Changelog:</p>
<ul>
<li>Removed boot.rb file. It was unnecessary.</li>
<li>When a new Mack application is generated the Rakefile that gets generated is stamped with the Mack gem version used to create it. This ties the project to that gem. This can, of course, be upgraded as new Mack gems come out, but it&#8217;s a good way of tying your app to a specific revision of Mack.</li>
<li>Added support for migrations for both ActiveRecord and DataMapper. DataMapper migration support requires DataMapper 0.3.0 gem. Please keep in mind, though, that DataMapper 0.3.0 has a serious bug in it, which may prevent you from using it. Please see <a href="http://www.mackframework.com/2008/04/09/horrible-bug-in-datamapper-030/">http://www.mackframework.com/2008/04/09/horrible-bug-in-datamapper-030/</a> for more information.</li>
<li>Rewrote distributed routing support to use Rinda inside of plain old DRb. This makes for an almost zero configuration usage.</li>
<li>Added: mack_ring_server binary to start a Rinda ring server for use with distributed routing.</li>
<li>Sqlite3 is now the default database for Mack applications configured with ORM support.</li>
<li>Added a test helper method, rake_task, to aid in the testing of Rake tasks.</li>
<li>Added: rake generate:migration name=&lt;migration_name&gt;</li>
<li>Added: rake db:migrate</li>
<li>Added: rake db:abort_if_pending_migrations</li>
<li>Added: rake db:rollback</li>
<li>Added: rake db:version</li>
<li>Added: rake mack:ring_server:start</li>
<li>Added: rake mack:ring_server:stop</li>
<li>Added: rake mack:ring_server:restart</li>
<li>Added: rake mack:ring_server:services:list</li>
<li>gem: application_configuration 1.2.2</li>
<li>gem: daemons 1.0.10</li>
</ul>
<ol></ol>
]]></content:encoded>
			<wfw:commentRss>http://www.metabates.com/2008/04/14/release-045/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.505 seconds -->

