<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>stonean</title>
	<atom:link href="http://stonean.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://stonean.wordpress.com</link>
	<description></description>
	<lastBuildDate>Wed, 11 Nov 2009 04:00:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='stonean.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/bca90c9438803acf47da3e7085e1cb3e?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>stonean</title>
		<link>http://stonean.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://stonean.wordpress.com/osd.xml" title="stonean" />
	<atom:link rel='hub' href='http://stonean.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Views deserve thought</title>
		<link>http://stonean.wordpress.com/2009/11/10/views-deserve-thought/</link>
		<comments>http://stonean.wordpress.com/2009/11/10/views-deserve-thought/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 03:46:01 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=314</guid>
		<description><![CDATA[On Sundays I normally try to sit down and watch some football, but usually the computer is open and I&#8217;m watching my fantasy team lose fantastically while attempting to work between the distractions of the game. This is obviously not very productive so, on a recent Sunday, I decided to close the computer and just [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=314&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On Sundays I normally try to sit down and watch some football, but usually the computer is open and I&#8217;m watching my fantasy team lose fantastically while attempting to work between the distractions of the game.  This is obviously not very productive so, on a recent Sunday, I decided to close the computer and just watch the games.  I made a mistake.</p>
<p>I grabbed a notebook I had laying in front of me and started scribbling.  I honestly don&#8217;t recall how it started, but I started jotting down some <a href="http://haml-lang.com/">Haml</a> and began asking myself questions like &#8220;why do I need to code the for loops?&#8221;.  Haml is so far away from HTML I was wondering why not take the extra steps and make it smarter?  Why couldn&#8217;t there be an attribute like :collection, that could tell Haml to repeat the contents for each item of the collection, roughly like:</p>
<pre><code>%ul{:collection =&gt; users}
   %li
     = first_name</code></pre>
<p>I quickly then jumped to why can&#8217;t I just do this in HTML, again, roughly like:</p>
<pre><code>&lt;ul ruby="collection: users"&gt;
  &lt;li ruby="first_name"&gt; User's First Name&lt;/li&gt;
&lt;/ul&gt;</code>
</pre>
<p>I immediately started digging into this idea and quickly created a core list of keywords that could provide some core functionality:</p>
<ul>
<li>_if: for conditional execution</li>
<li>_unless: for conditional execution</li>
<li>_collection: for looping</li>
</ul>
<p>With this core functionality in place, I did a brief announcement and had some great conversations.  Peter Cooper suggested the move from ruby to data-ruby for HTML5 compliance and then the suggestion was made to move from data-ruby to data-ruhl to protect against potential naming collisions.  More great conversations followed, one thing led to another and before I knew it, <a href="http://github.com/stonean/ruhl">RuHL</a> was officially born.</p>
<p>I didn&#8217;t have huge plans for this, I just wanted to see if I could pull off Haml/Erb functionality with just the data-ruhl attribute.  While I wasn&#8217;t sure where this was going, I knew I wanted to stick with this idea because I believe code in views is bad and this didn&#8217;t open the view like other template languages.  </p>
<p>To this point, the data-ruhl attribute simply calls methods.  Instance variables were initially supported, but it became clear that they promoted more code and therefore were removed.  This strengthened the belief that opening up your view to code encourages bad design.</p>
<p>With this thought in mind, I started reviewing a bunch of views to see what would have to change.  It was a lot and in order for RuHL to pull this off, the <a href="http://en.wikipedia.org/wiki/Presenter_First">presenter pattern</a> would have to be implemented.</p>
<p>This was not a comfortable change for me and I didn&#8217;t know if RuHL was a viable option at first, but I stuck to the belief that &#8220;code in views is bad&#8221; is correct.  I&#8217;m pleased I did because employing the presenter pattern has resulted in very clean code.  This separation of code from the view separates testing and this has been very good indeed.</p>
<p>Here&#8217;s where I think it really gets interesting.  What if the difficulty with view testing has been due to the fact that views are coded wrong?  When writing tests for controllers, it&#8217;s generally accepted that bad controller code complicates your tests and therefore makes them difficult.  In order to avoid these headaches, people have learned that skinny controllers are good.  Why haven&#8217;t we learned the same lesson with testing views?</p>
<p>Using the presenter pattern pushes logic into classes that are much easier to test and doesn&#8217;t require passing through controller methods to setup the various testing scenarios.  My view tests can be simplified to check for the correct data-ruhl attributes and to do this I don&#8217;t have to render my views, I can just parse them with Nokogiri.  Since these attributes call the methods that are covered in my presenter tests, I&#8217;m pretty well covered.</p>
<p>I&#8217;m still putting RuHL to real world tests and refining the library as use cases arise.  If you&#8217;ve had the same thought over the years and don&#8217;t mind HTML, give RuHL a shot.  </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/314/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/314/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/314/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=314&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/11/10/views-deserve-thought/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile Corporation</title>
		<link>http://stonean.wordpress.com/2009/05/21/agile-corporation/</link>
		<comments>http://stonean.wordpress.com/2009/05/21/agile-corporation/#comments</comments>
		<pubDate>Fri, 22 May 2009 01:58:32 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=301</guid>
		<description><![CDATA[Regarding processes and practices, a lot of what is published or promoted in the Rails world comes from the consultant point of view. I think it&#8217;s fantastic these companies and individuals share their lessons learned and there is great value in those lessons. If you are in a Rails shop looking at these examples as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=301&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Regarding processes and practices, a lot of what is published or promoted in the Rails world comes from the consultant point of view.  I think it&#8217;s fantastic these companies and individuals share their lessons learned and there is great value in those lessons.  If you are in a Rails shop looking at these examples as templates for organizing your team please take this information as guidelines.  Very good guidelines indeed, but not everything that fits for a consultancy will directly translate for your organization.  It is important for your team to discover what works for you in your environment.  Here&#8217;s the discovery process we went through, hopefully this will help you and your team.</p>
<p>Many months ago we started down the wrong road trying to do things in a rigid agile manner.  Sound weird?  Well it was, but we didn&#8217;t know any better at the time.  We were ignoring our gut instincts hoping this agile thing would prove us wrong.  After a short time, the word agile became an excuse used by some to avoid any architecture (any thought into the long term goal).  In fact, the term architecture became a symbol of everything anti-agile and therefore evil.  It was at this point for me that agile became an evil term and a symbol of avoidance.  These were not good times.</p>
<p>After a couple of missed deadlines and the realization that the &#8216;extra&#8217; time wasn&#8217;t producing a better product,  we revolted.  Now this isn&#8217;t like we had opposition during this revolt, just the opposite.  We given charge of this and the revolt was against our own blind stupidity.  It was embarrassing.</p>
<p>We then decided that <strong>nothing was sacred</strong>.  From the tools we used to the processes we employ, anything could be challenged and changed.  </p>
<p>As we were just starting down this path we had the great fortune in having <a href="http://hashrocket.com">Hashrocket</a> come aboard and pair with us.  With their help we delved deeper into the practices we already employed: pairing, bdd and daily scrums to name a few. We were also introduced to tools like <a href="http://pivotaltracker.com">PivotalTracker</a> and <a href="http://campfirenow.com">Campfire</a>.  </p>
<p>Some of the practices we were doing (pre-Hashrocket) were so weak that saying we employed them was almost laughable.  We got a lot of help in those areas.  We also were given rules for some practices that just did not transfer to our environment.  Did we expect them to?  Well yes, but that was incorrect to do so.  What we have done is taken the ideas as a starting point and let team define the rest.</p>
<p>Are we done, do we have everything ironed out and run flawlessly?  Absolutely not, but our team has grown in fantastic leaps and bounds and while things will continue to evolve, here are a few of core practices we will not abandon.  They are the reasons we will continue to learn and improve.</p>
<p>  **wow that was a really long intro for a short list</p>
<p><em><strong>Weekly Retrospective</strong></em><br />
Every Friday afternoon our dev team gets together, closes the door and talks about the week.  What we should keep doing, what we should stop doing and what did we learn are all discussed.  We have removed/added/altered processes, practices and tools from the result of these meetings.  This is the single greatest impetus for change.</p>
<p><em><strong>Iteration Leads</strong></em><br />
In order to spread knowledge about the different projects across the team we assign someone to the iteration lead role.  This is the go to person for the iteration and is responsible for seeing it through to a successful release.</p>
<p><em><strong>Team Board</strong></em><br />
This is simply a rolling whiteboard that we use to show the following:</p>
<ul>
<li>Pairs for the iteration and what they are working on.</li>
<li>Iteration leads</li>
<li>Release dates</li>
</ul>
<p><em><strong>Daily Standups</strong></em><br />
We actually have two different sessions every morning.  Since we have multiple products, the dev team breaks apart and goes to their product related standup.  We then get together and have a developer only standup to relay any information.  This divide and conquer technique has proven to be very efficient.</p>
<p>Last and not least:</p>
<p><em><strong>Pairing</strong></em><br />
This one is a post in itself, I&#8217;ll only briefly cover pairing.  Pairing is good, but like most things in the computer world doing something ALL the time usually fails.  At a minimum, I think there are times when pairing should be approached differently. For example:  If the pair is tasked with researching something that neither knows, I think researching the problem individually and regrouping later is a better approach.  Not everyone process information the same way.  More on this later, but as a basic rule: Pairing is good.</p>
<p>Over the past few months I have become more and more interested in what people are doing in the corporate setting.  I even went so far as to create <a href="http://rubytrends.com">RubyTrends.com</a> in an effort to get a picture of the entire Rails landscape, not just the consultancies.  While the site is rough right now (updates are coming soon), I would appreciate you voting on the projects, books and practices you use.  I think this information would be beneficial to us all.</p>
<p>Thanks for reading,<br />
-stonean</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/301/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/301/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/301/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=301&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/05/21/agile-corporation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Using ensure to reset a value</title>
		<link>http://stonean.wordpress.com/2009/04/25/using-ensure-to-reset-a-value/</link>
		<comments>http://stonean.wordpress.com/2009/04/25/using-ensure-to-reset-a-value/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 16:33:45 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=296</guid>
		<description><![CDATA[I have a bunch of links I need to build on page, links that are a modification to the current path. I wanted to be able to do my modifications and return the modified path (@updated_path) without changing the original path variable (@path). This isn&#8217;t difficult stuff, the only thing that I had to ponder [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=296&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have a bunch of links I need to build on page, links that are a modification to the current path.  I wanted to be able to do my modifications and return the modified path (@updated_path) without changing the original path variable (@path).</p>
<p>This isn&#8217;t difficult stuff, the only thing that I had to ponder on for a moment is how to get the updated path and reset it to the original state (@path.dup) in one nice little call.</p>
<p>This worked out nicely:</p>
<pre><code>
def updated_path
  @updated_path
ensure
  @updated_path = @path.dup
end
</code></pre>
<p>The updated_path method will return the old value and reset it afterward.  Nice and simple, I like.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/296/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=296&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/04/25/using-ensure-to-reset-a-value/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>config.gem</title>
		<link>http://stonean.wordpress.com/2009/04/10/configgem/</link>
		<comments>http://stonean.wordpress.com/2009/04/10/configgem/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 01:22:11 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=286</guid>
		<description><![CDATA[When the config.gem statement was introduced I was pleased. It was great to have a centralized list of what gems were required by your application and with the rake gems:install task it would, in some cases, install the gems defined. More about that later, in another post. After some time issues started to surface due [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=286&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When the config.gem statement was introduced I was pleased.  It was great to have a centralized list of what gems were required by your application and with the rake gems:install task it would, in some cases, install the gems defined.  More about that later, in another post.</p>
<p>After some time issues started to surface due to the lack of thought put into how to use config.gem.  Here&#8217;s a list of some do&#8217;s and don&#8217;ts:</p>
<ul>
<li>Use absolute version references!.  This is really important when you want to roll back.  If you update gems as a part of your deployment and your config.gem statement has :version =&gt; &#8220;&gt;= 0.9&#8243; and version &#8220;1.0&#8243; had api changes.  When you roll back, you&#8217;re still going to pick up the new version and potentially go boom!</li>
<li>Don&#8217;t put config.gem statements related to your application server.  e.g. don&#8217;t put references to mongrel, passenger, etc&#8230;  That&#8217;s a pain when you develop with passenger but deploy to mongrel boxes.</li>
<li>Use :lib =&gt; false, if you don&#8217;t want Rails to require the gem.</li>
<li>Do put testing related gems in your config/environments/test.rb, don&#8217;t put them in environment.rb (even if you use :lib =&gt; false, I think it&#8217;s a better practice. )</li>
<li>Don&#8217;t install the gem then add the config.gem statement.  Add the config.gem statement, then use rake gems:install.  This will help you find any issues before you deploy.</li>
</ul>
<p>If you have some best practices that have saved you, I would love to hear about them!  </p>
<p>Thanks to <a href="http://www.hashrocket.com/">Hashrocket</a> for at least one of the above.  Can&#8217;t remember where each one originated.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=286&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/04/10/configgem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>RubyTrends.com</title>
		<link>http://stonean.wordpress.com/2009/03/24/rubytrendscom/</link>
		<comments>http://stonean.wordpress.com/2009/03/24/rubytrendscom/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 03:18:20 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[rubytrends]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=283</guid>
		<description><![CDATA[On Sunday I released RubyTrends.com. As I had only worked on this site for a few days, it was definitely an early release but I thought there was enough there to start gathering feedback. There are a couple things I will add over the next couple of days: openid login and badges. OpenID login is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=283&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On Sunday I released <a href="http://rubytrends.com">RubyTrends.com</a>.  As I had only worked on this site for a few days, it was definitely an early release but I thought there was enough there to start gathering feedback.</p>
<p>There are a couple things I will add over the next couple of days: openid login and badges.  OpenID login is self explanatory.  Badges may not be, so here it goes.  I hope that developers put a simple link to RubyTrends to get people to acknowledge they use the project.  I&#8217;ll put sample code on the trend view page that links to the site.  It will direct the user to login/register and then count the vote.  This hasn&#8217;t been done yet, but will be soon.</p>
<p>The more action the site gets, the better we will be able to determine which projects people are using (based on tags).  That is the goal.  Just as much for me as someone new to Ruby.</p>
<p>So, if you have some ideas I&#8217;d love to hear them! </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/283/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=283&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/03/24/rubytrendscom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Convention of Configuration</title>
		<link>http://stonean.wordpress.com/2009/03/06/convention-of-configuration/</link>
		<comments>http://stonean.wordpress.com/2009/03/06/convention-of-configuration/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 01:21:35 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[Process]]></category>
		<category><![CDATA[RubyOnRails]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=258</guid>
		<description><![CDATA[My company is currently working on multiple Rails sites simultaneously. This involves multiple development groups and an infrastructure team tasked with providing multiple environments (continuous integration, qa, staging and production) for each project. There are many elements required to make this happen and we are in the process of working through the kinks. This post [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=258&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.primedia.com">My company</a> is currently working on multiple Rails sites simultaneously.  This involves multiple development groups and an infrastructure team tasked with providing multiple environments (continuous integration, qa, staging and production) for each project.  There are many elements required to make this happen and we are in the process of working through the kinks.  This post is about one of the solutions, convention of configuration.</p>
<p>There are definitely some things that have been done with the current version of Rails to help us.  There are definitely some things I would like to see changed in a near-future release (3.0?) of Rails that would provide a more ideal configuration solution.  I&#8217;ll get to that in a bit, but let&#8217;s start off with what can be done now.</p>
<p>Take advantage of the environment files in <code>RAILS_ROOT/config/environments</code>.  These should be THE place you look for your applications&#8217; configuration.  Take advantage of the fact you can provide a default setting in <code>RAILS_ROOT/config/environment.rb</code> and then override that setting in <code>RAILS_ROOT/config/environments/production.rb</code> or any environment you choose.  Also take advantage of the fact you can create an environment called staging and as long as there is a corresponding <code>RAILS_ROOT/config/environments/staging.rb</code>, you&#8217;re good.</p>
<p>How do you take advantage of this?  This simplest solution I&#8217;ve found is to create a file in your <code>RAILS_ROOT/config</code> directory that defines the configurations you need.  Here is a sample file we&#8217;ll call mycompany.rb:</p>
<pre><code>
module MyCompany
  module Configuration
    def google
      MyCompany::Google
    end
  end

  module Google
    class &lt;&lt; self
      attr_accessor :api_key
    end
  end
end

Rails::Configuration.send :include, MyCompany::Configuration
</code></pre>
<p>Then in your <code>RAILS_ROOT/config/environment.rb</code> add the following line after the require for &#8216;boot&#8217;:</p>
<pre><code>
require File.join(File.dirname(__FILE__), 'mycompany.rb')
</code></pre>
<p>This will require your file and allow you to do something very simple and expected in your <code>Rails::Initializer</code> block:</p>
<pre><code>
    config.google.api_key = 'THISISSSOMEVALIDAPIKEY'
</code></pre>
<p>If you create a default in environment.rb and override for other environments it will work as expected.  You can later reference this through your app as MyCompany::Google.api_key.</p>
<p>As you need more configurations, you can expand your mycomany.rb functionality and you will have your one expected place to go for both the development and infrastructure teams.</p>
<p>This is good, but it&#8217;s not perfect.  We can&#8217;t attempt to reach perfection with the current configuration construct provided by Rails.  </p>
<p>What&#8217;s wrong?  Well, instead of having the <code>RAILS_ROOT/config/environments</code> directory contain environment files, I would like them to contain environment directories.  For example, <code>RAILS_ROOT/config/environments/production/environment.rb</code> would be ideal.  This would allow applications like Capistrano to take advantage of this construct and place its environment related files in these directories.  A single place to look for production related settings would rock!</p>
<p>In order to avoid conflicts between development environments, development and test should not be stored in your source control.  Instead, give everyone a helping hand and start them out with an example (that should be in source control):<br />
<code>RAILS_ROOT/config/environments/development/environment.rb.example</code><br />
This example should be updated as needed to provide the latest configuration examples.</p>
<p>Another feature wish for the RAILS team is to do away with database.yml.  I think these settings belong with the rest.  Think of the code duplication you could save! I could set my adapter, encoding and database in <code>RAILS_ROOT/config/environment.rb</code> and leave the username password and host to be overridden by my different environments.<br />
You could start out with this:</p>
<pre><code>
  config.database.adapter = 'mysql'
  config.database.encoding = 'utf8'
  config.database.database = 'my_database'
</code></pre>
<p>Then in <code>RAILS_ROOT/config/environments/production/environment.rb</code> you could just </p>
<pre><code>
  config.database.username = 'super_secret_user'
  config.database.password = 'super_secret_pass'
  config.database.host = 'another_host'
</code></pre>
<p>I would like to hear what you think and if there are other conventions your team has adopted.  The more we can reduce the amount of documentation required between teams and develop an expectation, the more efficient our company will be.  </p>
<p>We are working every day to reach this goal and I will continue to share our findings in hope that they can be further refined.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/258/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/258/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/258/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=258&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/03/06/convention-of-configuration/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Git: Branch from a tag</title>
		<link>http://stonean.wordpress.com/2009/02/17/git-branch-from-a-tag/</link>
		<comments>http://stonean.wordpress.com/2009/02/17/git-branch-from-a-tag/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 00:43:52 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=250</guid>
		<description><![CDATA[In git, you can&#8217;t update a tag directly, but you can branch the code to create a new tag. Here&#8217;s how you would do that: First, you need to checkout the tag: git checkout &#60;tag_name&#62; Then create a branch: git branch -b &#60;branch_name&#62; After you make your changes, commit them (there are a few ways [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=250&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In git, you can&#8217;t update a tag directly, but you can branch the code to create a new tag.  Here&#8217;s how you would do that:</p>
<p>First, you need to checkout the tag:</p>
<pre><code>git checkout &lt;tag_name&gt; </code></pre>
<p>Then create a branch:</p>
<pre><code>git branch -b &lt;branch_name&gt;</code></pre>
<p>After you make your changes, commit them (there are a few ways to do this, keeping it simple):</p>
<pre><code>git commit -am 'my descriptive comment on this commit'</pre>
<p></code></p>
<p>You can create a new tag:</p>
<pre><code>git tag &lt;new_tag_name&gt;</code></pre>
<p>Then you can push the tag:</p>
<pre><code>git push --tags</code></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/250/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/250/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/250/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=250&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/02/17/git-branch-from-a-tag/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Lockdown ATLRug presentation</title>
		<link>http://stonean.wordpress.com/2009/02/13/lockdown-atlrug-presentation/</link>
		<comments>http://stonean.wordpress.com/2009/02/13/lockdown-atlrug-presentation/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 03:13:43 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[lockdown]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=239</guid>
		<description><![CDATA[My first presentation ever was at the ATLRug meeting this past Wednesday. It&#8217;s a little rough, but I&#8217;ll get better at them. Since I didn&#8217;t pay attention to where the mic was, you&#8217;ll have to turn up the volume to hear me. This is fine until the end, the applause (thankfully) is loud, so remember [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=239&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://atlrug.org/stonean/posts/96-Lockdown">My first presentation ever was at the ATLRug meeting this past Wednesday.</a></p>
<p> It&#8217;s a little rough, but I&#8217;ll get better at them.  Since I didn&#8217;t pay attention to where the mic was, you&#8217;ll have to turn up the volume to hear me.  This is fine until the end, the applause (thankfully) is loud, so remember to turn down the volume.</p>
<p>Also take the time out to listen to <a href="http://reinh.com/">ReinH&#8217;s</a> <a href="http://atlrug.org/news-pixie/posts/95-Ruby-loves-you">&#8216;Ruby loves you&#8217; presentation</a>, it&#8217;s very good.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/239/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/239/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/239/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=239&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/02/13/lockdown-atlrug-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Lockdown 0.8.1 Released</title>
		<link>http://stonean.wordpress.com/2009/02/12/lockdown-081-released/</link>
		<comments>http://stonean.wordpress.com/2009/02/12/lockdown-081-released/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 02:52:21 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[lockdown]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/?p=236</guid>
		<description><![CDATA[Lockdown version 0.8.1 has been released! The session[:access_rights] was being constructed as a nested array structure instead of a flat array structure when a permission had multiple controllers associated to it. Thanks to Robert Rowland for finding and reporting this issue!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=236&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://stonean.com/wiki/lockdown">Lockdown</a> version 0.8.1 has been released! </p>
<p>The session[:access_rights] was being constructed as a nested array structure instead of a flat array structure when a permission had multiple controllers associated to it.</p>
<p>Thanks to Robert Rowland for finding and reporting this issue!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/236/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/236/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/236/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=236&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/02/12/lockdown-081-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
		<item>
		<title>Lockdown Tip: access_rights_for_permission</title>
		<link>http://stonean.wordpress.com/2009/02/12/lockdown-tip-access_rights_for_permission/</link>
		<comments>http://stonean.wordpress.com/2009/02/12/lockdown-tip-access_rights_for_permission/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 02:49:59 +0000</pubDate>
		<dc:creator>stonean</dc:creator>
				<category><![CDATA[lockdown]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.stonean.com/2009/02/12/lockdown-tip-access_rights_for_permission/</guid>
		<description><![CDATA[You can use Lockdown::System.access_rights_for_permission(:perm_name) to get the array of access rights associated to the permission. This is handy for testing.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=235&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>You can use Lockdown::System.access_rights_for_permission(:perm_name) to get the array of access rights associated to the permission. </p>
<p>This is handy for testing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stonean.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stonean.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stonean.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stonean.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stonean.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stonean.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stonean.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stonean.wordpress.com/235/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stonean.wordpress.com&amp;blog=6398830&amp;post=235&amp;subd=stonean&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stonean.wordpress.com/2009/02/12/lockdown-tip-access_rights_for_permission/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/23ba4563ee927d7fd0912a4c59cac647?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">stonean</media:title>
		</media:content>
	</item>
	</channel>
</rss>
