<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Open Source E-Commerce for Ruby on Rails</title>
	
	<link>http://spreecommerce.com/blog</link>
	<description>Practical Software for the Serious Developer</description>
	<pubDate>Wed, 08 Jul 2009 11:23:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/spreehq" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Spree 0.8.5 Released</title>
		<link>http://spreecommerce.com/blog/2009/07/08/spree-085-released/</link>
		<comments>http://spreecommerce.com/blog/2009/07/08/spree-085-released/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 11:22:44 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[migrations]]></category>

		<category><![CDATA[rake]]></category>

		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/blog/?p=273</guid>
		<description><![CDATA[We&#8217;ve just done another patch release to Spree.  This release actually contains no changes other then those that were supposed to have made it into the 0.8.4 release.  Due to some &#8220;enthusiastic&#8221; git branch deletion I accidentally removed some of the changes needed for the release.  So the 0.8.4 release did not [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just done another patch release to Spree.  This release actually contains no changes other then those that were supposed to have made it into the 0.8.4 release.  Due to some &#8220;enthusiastic&#8221; git branch deletion I accidentally removed some of the changes needed for the release.  So the 0.8.4 release did not really do anything other then increment the version number.  This release contains the minor rake task upgrades that were supposed to be part of that release.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/07/08/spree-085-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spree 0.8.4 Released</title>
		<link>http://spreecommerce.com/blog/2009/07/02/spree-084-released/</link>
		<comments>http://spreecommerce.com/blog/2009/07/02/spree-084-released/#comments</comments>
		<pubDate>Fri, 03 Jul 2009 03:55:46 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[release rake migrations]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/blog/?p=271</guid>
		<description><![CDATA[The Spree team is proud to announce the official release of Spree 0.8.4.  This is a minor patch release that takes care of a few pesky issues related to migrations and sample data.  Specifically, the following issues have been fixed:


494 - There are no default states for United states when you don&#8217;t load [...]]]></description>
			<content:encoded><![CDATA[<p>The Spree team is proud to announce the official release of Spree 0.8.4.  This is a minor patch release that takes care of a few pesky issues related to migrations and sample data.  Specifically, the following issues have been fixed:</p>

<ul>
<li>494 - There are no default states for United states when you don&#8217;t load sample data</li>
<li>551 - Remove bootstrap restriction in production mode</li>
<li>553 - Allow creation of default user through web interface</li>
<li>550 - Seed data no longer populated correctly</li>
<li>552 - Allow db:admin:create rake task to be run more then once   </li>
</ul>

<p>The most important change is that we have modified the migrations so that they are no longer loading so-called &#8220;seed&#8221; data (countries, states etc.)  Keeping this seed data out of the migrations fixes a whole bunch of problems.  You can still create everything from scratch with a single rake task</p>

<pre><code>
rake db:bootstrap
</code></pre>

<p>By popular demand, the bootstrap task is once again permissable in production mode.  For safety reasons it will not drop the existing database in production mode (as it does automatically in development and test modes.)</p>

<p>You can also still build everything from scratch using individual rake tasks.  In fact, we&#8217;ve created several new rake tasks so you can have fine grain control.  </p>

<p>The following two rake tasks build an empty database with the required seed data.</p>

<pre><code>
rake db:migrate
rake db:seed
</code></pre>

<p>You can create an admin user (or an additional admin user if you already have one) using</p>

<pre><code>
rake db:admin:create
</code></pre>

<p>You can also load the sample data (assuming you don&#8217;t already have it through bootstrap) using</p>

<pre><code>
rake db:sample
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/07/02/spree-084-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Localizations: Thai and Hebrew</title>
		<link>http://spreecommerce.com/blog/2009/07/01/new-localizations-thai-and-hebrew/</link>
		<comments>http://spreecommerce.com/blog/2009/07/01/new-localizations-thai-and-hebrew/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:37:13 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/blog/?p=265</guid>
		<description><![CDATA[This week we have added two new localizations for Spree.  Apirak Panatkool has provided the Thai localization, while ranmoshe has generously provided the Hebrew version.  To find out more about Spree localization please read our documentation.  We are always on the lookout for new translations. If you are interested in contributing a [...]]]></description>
			<content:encoded><![CDATA[<p>This week we have added two new localizations for Spree.  Apirak Panatkool has provided the Thai localization, while ranmoshe has generously provided the Hebrew version.  To find out more about Spree localization please read our <a href="http://spreecommerce.com/documentation/i18n.html">documentation</a>.  We are always on the lookout for new translations. If you are interested in contributing a patch, please read the guide on <a href="http://spreecommerce.com/documentation/contributing_to_spree.html">how to contribute</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/07/01/new-localizations-thai-and-hebrew/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Checkout Now Supports Flexible System of Charges</title>
		<link>http://spreecommerce.com/blog/2009/06/25/checkout-now-supports-flexible-system-of-charges/</link>
		<comments>http://spreecommerce.com/blog/2009/06/25/checkout-now-supports-flexible-system-of-charges/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 13:23:50 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[edge]]></category>

		<category><![CDATA[shipping]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/blog/?p=252</guid>
		<description><![CDATA[The edge version of Spree has just been refactored to allow support for a new and improved system of order charges.  This recent commit gives you the ability to have an arbitrary number of charges associated with the order.  You are no longer restricted to just shipping and tax amounts (although those are [...]]]></description>
			<content:encoded><![CDATA[<p>The edge version of Spree has just been refactored to allow support for a new and improved system of order charges.  This <a href="http://github.com/railsdog/spree/commit/0f12041d6412364767d9daec5d5a165f8633053e">recent commit</a> gives you the ability to have an arbitrary number of charges associated with the order.  You are no longer restricted to just shipping and tax amounts (although those are still supported as charges now.)  This allows your checkout logic to add your own custom fees (and descriptions) if needed.</p>

<p>There is a new rake task which should migrate your existing orders so that they now have shipping and tax charges when applicable.  As always, please backup your database before attempting to run the migrations.  If you&#8217;re running the source you&#8217;ll also need to remove the now empty <code>vendor/extensions/tax_calculator</code> directory after your <code>git pull</code>.</p>

<p>This code is very edge so be prepared for a few bumps if you decide to use it.  There is at least one <a href="http://railsdog.lighthouseapp.com/projects/31096/tickets/513-sales-total-report-is-not-working#ticket-513-1">known issue</a> and we&#8217;ll likely encounter a few more as we go.  You may also want to do a search in your custom code for references to <code>tax_amount</code> and <code>ship_amount</code>.  These are no longer valid attributes for the order model.  If you need the tax or shipping total for something, however, you can do the following:</p>

<pre><code class="ruby">
  @order.tax_charges.sum(:amount)
</code></pre>

<p>So now that we can support an arbitrary number of charges, the next task is to support an arbitrary number (and type) of credits.  This concept should be relatively easy since a credit is really just the flip side of a charge.  Once that is implemented we can finally get to the coupon and discount stuff that we have been planning for a while now.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/06/25/checkout-now-supports-flexible-system-of-charges/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New Website Launched</title>
		<link>http://spreecommerce.com/blog/2009/06/14/new-website-launched/</link>
		<comments>http://spreecommerce.com/blog/2009/06/14/new-website-launched/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 01:26:11 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[documentation]]></category>

		<category><![CDATA[lighthouse]]></category>

		<category><![CDATA[redesign]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/blog/?p=244</guid>
		<description><![CDATA[Today we are proud to announce the launch of our new website.  The updated site has been several weeks in the making and we&#8217;ve got a lot of new features that we think will help promote further adoption of the Spree platform.  There may be a few rough spots since we were in [...]]]></description>
			<content:encoded><![CDATA[<p>Today we are proud to announce the launch of our new website.  The updated site has been several weeks in the making and we&#8217;ve got a lot of new features that we think will help promote further adoption of the Spree platform.  There may be a few rough spots since we were in a hurry trying to meet our own self-imposed deadline.  The documentation section in particular is likely to be a little bit rough and a few spots are still outdated.  With the site redesign behind us, we&#8217;ll be getting back to applying code patches and improving the documentation.  </p>

<p>Paul Callaghan has been improving our documentation while Brian Quinn has been hard at work migrating our issue tracker over to <a href="http://railsdog.lighthouseapp.com/projects/31096-spree/overview">Lighthouse</a>.  The move to LH is going to have several benefits for us, including improved integration with <a href="http://github.com/railsdog/spree/tree/master">GitHub</a>.  We&#8217;re going to have a slightly more formal issue reporting and resolution process which I&#8217;ll explain in more detail later in the week.  Unfortunately we were not able to preserve the issue authorship informaiton during the migration.  Actually, its preserved but as part of the issue text (Reported by: Sean Schofield.)  So you will have to sign up for LH if you don&#8217;t already have an account.  In theory this lowers the barrier for reporting issues since many Rails developers already have a LH account.  They also accept OpenID if you&#8217;re into that sort of thing.</p>

<p>Paul Callaghan and I have been working on the new <a href="http://ext.spreecommerce.com/">extension directory</a> which we will now be using to keep track of all of the third party extensions people have been writing.  We&#8217;ve got a bunch of them in there already with many more to be added still.  If you have extensions to share please publish on GitHub and add them to our registry.  Make sure you follow the instructions in our new online documentation concerning the <a href="http://spreecommerce.com/documentation/extensions.html#creating-your-own-extension">creation of your own extensions</a>.  Special thanks to Juan José Vidal (<a href="http://github.com/juanjo">juanjo</a>) for the original contribution of code in the form of the <a href="http://github.com/juanjo/tension/tree/master">tension</a> project.</p>

<p>We have also made significant changes to our <a href="http://wiki.github.com/railsdog/spree">wiki</a>.  Most of the wiki has been ported over to the new <a href="http://spreeworks.org/documentation/">Spree Guides</a>.  We still have a lot of clean up to do on our wiki but we didn&#8217;t want to hold things up over such a small thing.  In the next few days we&#8217;ll be combing through the wiki and getting it down to just the bare essentials.  The idea is that the wiki is going to be for FAQ, troubleshooting and other advice from users.  The thinking is that the wiki is still useful even though we have this great online documentation as well.  Its a work in progress so we&#8217;ll see how this works out in the coming weeks.</p>

<p>If you&#8217;re curious about who helped us with the redesign, we hired <a href="http://www.erikagreco.com/portfolio.html">Erika Greco</a> whose quality of work speaks for itself.  </p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/06/14/new-website-launched/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New on Edge Spree: jsTree &amp; jQuery.noconflict</title>
		<link>http://spreecommerce.com/blog/2009/06/11/new-on-edge-spree-jstree-jquery-noconflict/</link>
		<comments>http://spreecommerce.com/blog/2009/06/11/new-on-edge-spree-jstree-jquery-noconflict/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 21:21:32 +0000</pubDate>
		<dc:creator>brianquinn</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[edge]]></category>

		<category><![CDATA[jquery]]></category>

		<category><![CDATA[jstree]]></category>

		<guid isPermaLink="false">http://spreeworks.org/blog/?p=240</guid>
		<description><![CDATA[We&#8217;ve just finished retiring the YUI tree control that was being used to maintain Taxonomies and replaced it with the jQuery friendly jsTree. This is the first step in migrating the admin interface to use jQuery only (and completely removing Prototype). The new jsTree provides much more precise drag &#038; drop functionality allowing you to [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just finished retiring the YUI tree control that was being used to maintain Taxonomies and replaced it with the jQuery friendly <a href="http://www.jsTree.com">jsTree</a>. This is the first step in migrating the admin interface to use jQuery only (and completely removing Prototype). The new jsTree provides much more precise drag &#038; drop functionality allowing you to re-order and drop nodes under new parents quite easily. The UI has also be tested under FF3 and Safari3 on OSX as well as FF3 and IE7 on Windows and seems to play well on all platforms, please feel free to log any cross-platform issues discovered.</p>

<p>jQuery is currently running using the <a href="http://docs.jquery.com/Core/jQuery.noConflict">noconflict()</a> option for the Administration interface only, this should help avoid any issues with Prototype during the transition. We plan in enable noconflict() on the customer facing interface at some point in the future to allow developers to use Prototype if they wish in their site extensions.</p>

<p>We&#8217;ve also included the <a href="http://abeautifulsite.net/notebook/87">jQuery.alerts</a> plugin that provides richer replacements for the standard javascript alert and confirm methods. We&#8217;d suggest that any extension developer should look at including them for things like delete confirmations, see <a href="http://github.com/railsdog/spree/blob/453b0466804faba2d867d484c33f14d194659400/public/javascripts/taxonomy.js#L100">taxonomy.js</a> for example usage.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/06/11/new-on-edge-spree-jstree-jquery-noconflict/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Last Day at End Point</title>
		<link>http://spreecommerce.com/blog/2009/05/28/last-day-at-end-point/</link>
		<comments>http://spreecommerce.com/blog/2009/05/28/last-day-at-end-point/#comments</comments>
		<pubDate>Thu, 28 May 2009 16:00:10 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://spreeworks.org/blog/?p=235</guid>
		<description><![CDATA[Today marks my last day of employment at End Point.  I was hired by End Point back in February 2008 after they had noticed my work on the Spree project (which was actually called Rails Cart at the time.)  They offered to lend their extensive commerce expertise and to help nurture the project, [...]]]></description>
			<content:encoded><![CDATA[<p>Today marks my last day of employment at <a href="http://endpoint.com">End Point</a>.  I was hired by End Point back in February 2008 after they had noticed my work on the Spree project (which was actually called Rails Cart at the time.)  They offered to lend their extensive commerce expertise and to help nurture the project, much like they had done for a simliar project known as <a href="http://www.icdevgroup.org/i/dev">Interchange</a> which is very popular in the Perl community.  It has been an extremely productive partnership and during my tenure with the company the Spree project has really flourished.</p>

<p>My departure from End Point is based largely on personal reasons.  After speding the last four years working out of my home office, it recently became apparent to me that I needed to make a change.  The home work environment has become way too distracting as my son gets older and more demanding of my time.  My office also sits in the center of the house so its pretty much impossible to isolate myself from all of the distractions around me.  Believe me, if there was a way to make that situation better I feel I would have discovered it by now.</p>

<p>The only reason why I&#8217;m bothering to mention this on the Spree home page is because its possible that this departure will raise questions and concerns about the future of the Spree project.  Let me start off by saying that I personally remain committed to the long term stability and success of the Spree project.  I&#8217;ve given a great deal of thought as to how to best move the project forward.  I actually think that recent developments are going to accelerate the pace of this project, as opposed to slowing it down.  Here are some things to consider:</p>

<ul>
<li><p><strong>Core Team:</strong>  All members of the core team have permission to commit to the Spree core.  Removing myself as the sole gatekeeper to what goes into the project has removed a bottleneck that was starting to effect the project adversely.  We&#8217;re already starting to see reduced wait times for reviewing and committing code contributions.  It also reduces my personal stress considerably.  I can go away for a long weekend and the project does not need to come to a halt.  The core team consists of four developers (including myself) plus some excellent candidates to be added in the future.</p></li>
<li><p><strong>Strong Community:</strong> We have a very strong open source community here at the Spree project.  There&#8217;s an active mailing list where users help one another without having to rely exclusively on answers from the core team.  That&#8217;s the sign of a strong community for sure.  The issue tracker is buzzing with activity and we are getting a steady stream of patches (and new translations!)</p></li>
<li><p><strong>New Sponsorship:</strong> The Spree project will now be sponsored by Rails Dog (that&#8217;s me.)  I&#8217;ve already invested some money in purchasing the <code>spreecommerce.com</code> domain name.  End Point will remain an active partner in the Spree project and they will continue to provide their <a href="http://spreecamps.com">excelllent hosting services</a>.  By taking over sponsorship of the Spree project directly this should help alleviate any concerns that people might have about one single company being too closely tied to the project.  Spree is a true open source project.  It belongs to all of us and we&#8217;re all in this together.</p></li>
<li><p><strong>New Website:</strong> The Spree project will soon be sporting a new website.  I&#8217;m going to be spending a considerable amount of my  personal money into making this site a little more polished and attractive.  The new documentation effort is going to be part of this process as well.  So you shouldn&#8217;t be thinking &#8220;Oh noze! There goes Spree!&#8221;  Spree marches on with even more resources and determination than ever before.</p></li>
<li><p><strong>Corporate Support:</strong> End Point has indicated to me that they intend to stay very active with the project.  We can expect to see even more contributions on the mailing list and in the form of source code from these guys.  In addition to my new company, there are many other companies out there indicating they are willing to provide support.  The more companies using Spree the better for all of us.</p></li>
</ul>

<p>My future plans will be taking me to a small company called <a href="http://www.econify.com">Econify</a> which is located in Washington, D.C.  The owner of the company is actually a friend of mine from <a href="http://www.psu.edu/">college</a>.  The office is located close to home and only two blocks from where my wife works so we&#8217;ll be able to commute together.  They&#8217;re also offering a flexible schedule so I can have some predictable time off to schedule my family stuff around.  My new company will be doing Spree consulting if anybody is interested.  Just drop me an email at <a href="mailto:sean@railsdog.com">sean@railsdog.com</a> if you&#8217;ve got either a project or just need a few hours of consulting time to advise on a project.</p>

<p>Spree continues to gain momentum thanks to all of our hard work together.  This month the website topped 10,000 visitors for the first time and we&#8217;re closing in on 500 watchers in GitHub.  We&#8217;ve also received contributions from over 60 different developers. I&#8217;ll be taking a long weekend off starting tomorrow but then its back to business.  I&#8217;ll be using the next two weeks to finish off our shiny new website which we hope to launch on June 15.  I look forward to even more progress in the second half of the year.    </p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/05/28/last-day-at-end-point/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sass Stylesheet Refactoring</title>
		<link>http://spreecommerce.com/blog/2009/05/28/sass-stylesheet-refactoring/</link>
		<comments>http://spreecommerce.com/blog/2009/05/28/sass-stylesheet-refactoring/#comments</comments>
		<pubDate>Thu, 28 May 2009 13:00:30 +0000</pubDate>
		<dc:creator>steph</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[sass]]></category>

		<category><![CDATA[stylesheets]]></category>

		<guid isPermaLink="false">http://spreeworks.org/blog/?p=231</guid>
		<description><![CDATA[This year at RailsConf, I met Chris Eppstein, a core contributor to the Sass project, and the creator of the Compass framework. Having recently integrated Sass, Compass, and Blueprint in the release of Spree 0.8.0, I wanted to have Chris look at the Spree core Sass implementation. He gave some great insight and as a [...]]]></description>
			<content:encoded><![CDATA[<p>This year at <a href="http://en.oreilly.com/rails2009/">RailsConf</a>, I met <a href="http://github.com/chriseppstein">Chris Eppstein</a>, a core contributor to the <a href="http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html">Sass</a> project, and the creator of the <a href="http://compass-style.org/">Compass</a> framework. Having recently integrated Sass, Compass, and Blueprint in the <a href="http://spreecommerce.com/articles/2009/05/04/spree-0-8-0-released/">release of Spree 0.8.0</a>, I wanted to have Chris look at the Spree core Sass implementation. He gave some great insight and as a result, several changes were made to the Spree core described below:</p>

<p>First, with the latest core changes, <code>screen.Sass</code> is broken down into several components, such as:</p>

<pre>
<code>
...
@import mixins.Sass
@import colors.Sass
@import layout.Sass
@import product_detail.Sass
@import cart.Sass
@import checkout.Sass
...
</code>
</pre>

<p>This improved organization will make it easier to adjust the core code for specific page or component changes. For example, <a href="http://github.com/bryanmtl">one visitor</a> to the RailsConf <a href="http://en.oreilly.com/rails2009/public/schedule/detail/9107">Spree Birds of a Feather</a> session discussed how his client requires the single page checkout to be overridden and separated into separate steps. Instead of managing the entire <code>screen.Sass</code> stylesheet, he can simply override the <code>checkout.Sass</code> file for the required changes. This modularization will make it easier to adjust style rules without the fear of conflicting with or breaking other site style rules.</p>

<p>Second, a benefit that comes from the Sass improvements is the move to separate color stylesheet rules from the layout style rules. For example, the <code>colors.Sass</code> file contains the following:</p>

<pre>
<code>
...
!input_border = #BBB
!default_border_color = #DDD
!link_hover_color = #eee
!lighter_text_color = #666
!medium_blue = #2E6AB1
!lightest_blue = #BBDAFD
!light_blue = #E5F2F8
!dark_blue = #162F54
...
</code>
</pre>

<p>These color rules are then used throughout the stylesheets. Below is an example of their implementation:</p>

<pre>
<code>
#header
 :position relative
 :color = !medium_blue
 :clear both
 a
   :color = !medium_blue
   &#038;:hover
     :color = !light_blue
</code>
</pre>

<p>The above Sass yields the following css rules:</p>

<pre>
<code>
#header {
 position: relative;
 color: #2e6ab1;
 clear: both; }
 #header a {
   color: #2e6ab1; }
   #header a:hover {
     color: #e5f2f8; }
</code>
</pre>

<p>The benefit of separating the colors from the layout is that the long term plan is to allow for a much easier way to reskin the site by making minimal changes to <code>layout.Sass</code> and <code>colors.Sass</code>. For example, in the future <code>colors.Sass</code> may contain the following:</p>

<pre>
<code>
...
!input_border = #BBB
!default_border_color = #DDD
!link_color = #ABABAB
!link_hover_color = #EEE
!lighter_text_color = #666
!background_color = #2E6AB1
!accent_color = #BBDAFD
...
</code>
</pre>

<p>A separation of &#8220;lipstick&#8221; and &#8220;layout&#8221; will ease the ability to customize the Spree look, which is an essential for every implementation of Spree.</p>

<p>A final benefit with this round of Sass improvements was to take advantage of mixins, which allow you to define a set of CSS attributes and include them in any number of selectors as an inline rule. This goes along with the DRY notion - it&#8217;s much easier to manage a single css definition that is applied to many selectors. The mixins also accept arguments and can have a default argument value. Below is an example of a mixin definition with a default value:</p>

<pre>
<code>
= round_corners(!radius = 5px)
 :-moz-border-radius= !radius
 :-webkit-border-radius= !radius
</code>
</pre>

<p>The mixin is used in a selector, such as:</p>

<pre>
<code>
button
 +round_corners(0.3em)
 &#038;.large
   +round_corners
</code>
</pre>

<p>The above example yields the following CSS:</p>

<pre>
<code>
button {
 -moz-border-radius: 0.3em;
 -webkit-border-radius: 0.3em;
}
button.large {
 -moz-border-radius: 4px;
 -webkit-border-radius: 5px;
}
</code>
</pre>

<p>Although at this point the Sass implementation does not introduce new skinning functionality, it certainly gets the Spree project moving in the right direction. Some future improvements include improving the ease of overriding Spree core colors as discussed above, improving the ease of overriding stylesheet rules or complete Sass components, and introducing a mechanism to include extension style rules in order to avoid having to include a separate stylesheet for every extension.</p>

<p>For more information on Compass and Sass, take a look at the <a href="http://awardwinningfjords.com/2009/04/26/a-compass-Sass-screencast-via-chris-eppstein/">Compass &#038; Sass screencast</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/05/28/sass-stylesheet-refactoring/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Announcing the Spree Core Team</title>
		<link>http://spreecommerce.com/blog/2009/05/18/announcing-the-spree-core-team/</link>
		<comments>http://spreecommerce.com/blog/2009/05/18/announcing-the-spree-core-team/#comments</comments>
		<pubDate>Mon, 18 May 2009 07:30:11 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/articles/2009/05/18/announcing-the-spree-core-team/</guid>
		<description><![CDATA[I am pleased to announce the formation of an official Spree &#8220;Core Team.&#8221;  The core team will be responsible for the continued maintenance and development of the Spree project, as well as assisting with our community building effort.  The concept of a core team is not new - most open source projects have [...]]]></description>
			<content:encoded><![CDATA[<p>I am pleased to announce the formation of an official Spree &#8220;Core Team.&#8221;  The core team will be responsible for the continued maintenance and development of the Spree project, as well as assisting with our community building effort.  The concept of a core team is not new - most open source projects have one (including <a href="http://rubyonrails.org/core">Ruby on Rails</a>.) The new core team members are: <a href="http://github.com/bdq">Brian Quinn (bdq)</a>, <a href="http://www.rocket-works.co.uk/">Paul Callaghan (paulcc)</a> and <a href="http://github.com/infinitize">Dale Hofkens (zzip/inifinitize)</a>.  </p>

<p>There is also an important change to the Spree project in GitHub.  The project can now be found at <a href="http://github.com/railsdog/spree/tree/master">railsdog/spree</a> instead of schof/spree.  This shouldn&#8217;t impact too many people, since I just renamed my personal account and all of the forks and watchers should be intact.  Your GitHub forks will continue to work properly but going forward you will want to clone/pull from the new repository location:  <code>git://github.com/railsdog/spree.git</code> If you are tracking the old schof/master repository in GitHub you wil probably need to update your remote references.</p>

<p>For example inside of <code>.git/config</code> if you have a remote reference to <code>schof</code> you would want to change it as follows:</p>

<pre><code>

[remote "schof"]
        url = git://github.com/schof/spree.git
        fetch = +refs/heads/*:refs/remotes/schof/*
</code></pre>

<p>should be changed to the following</p>

<pre><code>
[remote "railsdog"]
        url = git://github.com/railsdog/spree.git
        fetch = +refs/heads/*:refs/remotes/railsdog/*

</code></pre>

<p>Please feel free to drop us a line on the Spree <a href="http://groups.google.com/group/spree-user">mailing list</a> if you have any troubles with the move.</p>

<p>You may be wondering what has prompted this change.  In the past several months we have seen an explosion of interest in (and contributions to) the Spree project. We are now in the enviable position of having more contributions then can be handled by a single person.  Its important that these contributions be reviewed for code quality and possible implications for the Spree community as a whole.  Instead of getting bogged down with delays I&#8217;ve decided to enlist the help of these three individuals who are going to help with code review and general project leadership.  Each of the new core team members has shown an excellent ability to work together as a member of a team - something that is just as important as a person&#8217;s programming ability.</p>

<p>You may also be curious as to what this means for my involvement in the project.  I personally plan to remain very active and involved in the Spree e-commerce project.  I will still be coding and I&#8217;m going to continue answer emails and IRC questions when possible.  Most importantly, I will continue to provide oversight of the project and making sure that we are not straying too far from the original vision.  I&#8217;m personally very excited about this step, as it allows me to offload some of the project maintenance and the entire community reaps the benefit of a faster development and release cycle.  We&#8217;ve already demonstrated that we can build a pretty sweet commerce platform without a bunch of venture capital.  The core team now gives us a solid foundation as we take things to the next level.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/05/18/announcing-the-spree-core-team/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Exciting Commerce Developments at RailsConf</title>
		<link>http://spreecommerce.com/blog/2009/05/09/exciting-commerce-developments-at-railsconf/</link>
		<comments>http://spreecommerce.com/blog/2009/05/09/exciting-commerce-developments-at-railsconf/#comments</comments>
		<pubDate>Sat, 09 May 2009 22:42:44 +0000</pubDate>
		<dc:creator>railsdog</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://spreecommerce.com/articles/2009/05/09/exciting-commerce-developments-at-railsconf/</guid>
		<description><![CDATA[The Spree ecommerce project was on proud display at this years RailsConf and there were plenty of exciting new developments to talk about.  End Point was there in full force with four of its employees in attendance.  I&#8217;m pleased to report that many of the people we had talked to were already familiar [...]]]></description>
			<content:encoded><![CDATA[<p>The Spree ecommerce project was on proud display at this years RailsConf and there were plenty of exciting new developments to talk about.  <a href="http://www.endpoint.com">End Point</a> was there in full force with four of its employees in attendance.  I&#8217;m pleased to report that many of the people we had talked to were already familiar with Spree.  Those that had not heard of Spree seemed to be impresed with it upon learning more about it.  We had pretty good attendance for our <a href="http://en.oreilly.com/rails2009/public/schedule/detail/9107">Spree BOF</a> despite having to compete agains the Lightning Talks and the Penn and Teller show.  It was great meeting several of our existing users as well as others who were hoping to learn more about Spree.</p>

<p>Fabio Akita did a <a href="http://www.akitaonrails.com/2009/05/08/railsconf-09-exclusive-audio-interviews">lengthy interview</a> with me about Spree on the second day of the conference which he already has posted.  I haven&#8217;t listened to it yet but it was basically a discussion about the origins of the project and what makes Spree special as a commerce platform.  The &#8220;Rails Envy&#8221; guys were kind enough to mention us during their <a href="http://en.oreilly.com/rails2009/public/schedule/detail/6700">Rails: A Year of Innovation</a> talk.  Carl and Yehuda both mentioned Spree during their talk on <a href="http://en.oreilly.com/rails2009/public/schedule/detail/7785">The Russian Doll Pattern: Mountable Apps in Rails 3</a>.  Mountable apps look extremely promising and they have important implications for projects such as Spree.</p>

<p>One of my main goals at this conference was to learn more about the exciting concept of mountable apps.  Yahuda explained that in Rails 3, applications will be able to define &#8220;mount points&#8221; which define an informal sort of API that can be used to link applications together.  In this way, applications such as Spree could be combined with other applications, such as <a href="http://radiantcms.org">Radiant</a>, and they could even share common aspects such as login or admin panel.  The ability to mount several apps together is a confirmed (and nearly completed) feature for Rails 3.  The actual implementation of a commmon login and admin menu is being envisioned as a separate project outside of the Rails core.  In fact, Yahuda and Carl have already started up a <a href="http://groups.google.com/group/rails-reusable-applications">Google Group</a> to discuss such a venture.  Feel free to join in the discussion if this is something that interests you (and it should interest you if you are planning on doing a lot of Spree development in the future.)</p>

<p>One exciting announcement during the conference was that End Point is now offering dedicated <a href="http://www.spreecamps.com/">Spree Hosting</a>.  They&#8217;re offering highly secure, pre-configured Linux boxes with all of the Spree software and dependencies installed and ready to go.  My favorite aspect of this offering is the parallel development environment you get for free with <a href="http://www.spreecamps.com/camps">dev camps</a>.  Personally I like this kind of service because it saves me the hassle - particularly when it comes to setting up log rotation, dedicated backups, nagios monitoring, etc.</p>

<p>RailsConf tends to provide leading indicators on what technologies will become a big deal in the following year.  Last year everyone was talking about Phusion Passenger.  This year, there is the same level of buzz (probably even more) surrounding <a href="http://rack.github.com/">Rack</a>.  I&#8217;ve recently discovered an <a href="http://guides.rubyonrails.org/rails_on_rack.html">excellent guide</a> on this topic on the Rails site.  Gregg Pollack also gave a very excellent explanation of Rack during his innovation talk (with video of this talk promised soon on <a href="http://railsenvy.com">Rails Envy</a>. There was also a lot of talk about <a href="http://metric-fu.rubyforge.org/">metric_fu</a> which is a nice gem that combines a series of code metric modules into a single gem.  We&#8217;ll be running this on the Spree project soon.  I&#8217;m sure there&#8217;s lots of room for improvement.</p>

<p>RailsConf was a great time and definitely worthwhile.  I was glad for the opportunity to get the word out on Spree and spend time with my coworkers.  Even better then talking about Spree was listening about what other people were up to.  After the conference we all had several exciting new ideas on how to improve Spree.  You&#8217;ll be hearing more about these new ideas in the coming days.</p>
]]></content:encoded>
			<wfw:commentRss>http://spreecommerce.com/blog/2009/05/09/exciting-commerce-developments-at-railsconf/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
