<?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>Ben Atkin&#039;s Self-Hosted Blog &#187; rails</title>
	<atom:link href="http://benatkin.com/tag/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://benatkin.com</link>
	<description>My true voice on the Internet.</description>
	<lastBuildDate>Wed, 23 May 2012 13:55:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>how rails depends on treetop, and how I found that out</title>
		<link>http://benatkin.com/2011/11/28/how-rails-depends-on-treetop-and-how-i-found-that-out/</link>
		<comments>http://benatkin.com/2011/11/28/how-rails-depends-on-treetop-and-how-i-found-that-out/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 07:55:22 +0000</pubDate>
		<dc:creator>Ben Atkin</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[dependencies]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[thought process]]></category>
		<category><![CDATA[treetop]]></category>

		<guid isPermaLink="false">http://benatkin.com/?p=1058</guid>
		<description><![CDATA[I&#8217;m working on a project where I think I&#8217;ll be using a parser library so I&#8217;ve been looking at the options. One thing I&#8217;ve noticed is that treetop is installed when Rails is installed. I didn&#8217;t know why, though, so &#8230; <a href="http://benatkin.com/2011/11/28/how-rails-depends-on-treetop-and-how-i-found-that-out/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a project where I think I&#8217;ll be using a parser library so I&#8217;ve been looking at the options. One thing I&#8217;ve noticed is that treetop is installed when Rails is installed. I didn&#8217;t know why, though, so I looked around.</p>
<p>First I looked at the Gemfile.lock. Had I known the format I would have found out my answer more quickly. I didn&#8217;t, though, and so when I found my first result for treetop, I stopped. It showed treetop below specs in the hierarchy.</p>
<pre class="brush: plain; title: ; notranslate">
GEM
  remote: http://rubygems.org/
  specs:
    # ...snip...
    thor (0.14.6)
    tilt (1.3.3)
    treetop (1.4.10)
      polyglot
      polyglot (&gt;= 0.3.1)
    tzinfo (0.3.30)
    uglifier (1.0.3)
</pre>
<p>The next thing I did was run <code>find . -iname '*.treetop'</code> in <code>~/.rbenv</code>. It found the following results:</p>
<pre class="brush: plain; title: ; notranslate">
(mbp) ~/.rbenv/versions/1.9.2-p290 $ find . -iname '*.treetop'
./lib/ruby/gems/1.9.1/gems/erector-0.8.3/lib/erector/erect/rhtml.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/address_lists.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/content_disposition.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/content_location.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/content_transfer_encoding.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/content_type.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/date_time.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/envelope_from.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/message_ids.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/mime_version.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/phrase_lists.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/received.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/rfc2045.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/rfc2822.treetop
./lib/ruby/gems/1.9.1/gems/mail-2.3.0/lib/mail/parsers/rfc2822_obsolete.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/examples/lambda_calculus/arithmetic.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/examples/lambda_calculus/lambda_calculus.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/lib/treetop/compiler/metagrammar.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/compiler/test_grammar.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/compiler/test_grammar_do.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/composition/a.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/composition/b.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/composition/c.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/composition/d.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/composition/f.treetop
./lib/ruby/gems/1.9.1/gems/treetop-1.4.10/spec/composition/subfolder/e_includes_c.treetop
(mbp) ~/.rbenv/versions/1.9.2-p290 $
</pre>
<p>Aha, so there are numerous treetop files in actionmailer! I have my answer. Seems like a good use of a parser, plus those may be worth using as examples.</p>
<p>Then I took another look at a <a href="https://github.com/benatkin/dailygit/blob/master/Gemfile.lock">Gemfile.lock</a> from a rails project, and saw that it was plainly listed there. I just didn&#8217;t see it and didn&#8217;t keep looking after I found one.</p>
<pre class="brush: plain; title: ; notranslate">
GEM
  remote: http://rubygems.org/
  specs:
    XMLCanonicalizer (1.0.1)
      log4r (&gt;= 1.0.4)
    actionmailer (3.1.1)
      actionpack (= 3.1.1)
      mail (~&gt; 2.3.0)
  # ...snip...
</pre>
<p>I noticed something: Gemfile.lock doesn&#8217;t show an arbitrarily nested hierarchy; instead it shows a list of gems and their dependencies, where the list of gems includes all gems. Then, separately at the end of the file, it shows the top-level gems from the Gemfile.</p>
<p>To see a deeply nested, a graph could be constructed from the Gemfile.lock, using the two nesting levels under <code>specs</code> as an adjacency list.</p>
]]></content:encoded>
			<wfw:commentRss>http://benatkin.com/2011/11/28/how-rails-depends-on-treetop-and-how-i-found-that-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A JSON Column Coder for Rails 3.1</title>
		<link>http://benatkin.com/2011/11/07/json-column-coder/</link>
		<comments>http://benatkin.com/2011/11/07/json-column-coder/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 21:37:05 +0000</pubDate>
		<dc:creator>Ben Atkin</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[coders]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[serialization]]></category>

		<guid isPermaLink="false">http://benatkin.com/?p=1031</guid>
		<description><![CDATA[Rails 3.1 has a serialize function that can take a custom column coder. A custom coder needs to have dump and load methods set, or else it will be recognized as a required type for the built-in YAML coder called &#8230; <a href="http://benatkin.com/2011/11/07/json-column-coder/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Rails 3.1 has a <code>serialize</code> function that can take a custom column coder. A custom coder needs to have <code>dump</code> and <code>load</code> methods set, or else it will be recognized as a required type for the built-in YAML coder called YAMLColumn.</p>
<p>While the JSON class has the two required methods, it doesn&#8217;t allow specifying a default. So I created a custom coder. I don&#8217;t know where the best file and module locations to put the class in are, so I won&#8217;t include them here. This is the class, though:</p>
<pre class="brush: ruby; title: ; notranslate">
class JSONColumn
  def initialize(default={})
    @default = default
  end

  # this might be the database default and we should plan for empty strings or nils
  def load(s)
    s.present? ? JSON.load(s) : @default.clone
  end

  # this should only be nil or an object that serializes to JSON (like a hash or array)
  def dump(o)
    JSON.dump(o || @default)
  end
end
</pre>
<p>Since <code>load</code> and <code>dump</code> are instance methods, an instance of JSONColumn needs to be passed rather than the class. Here&#8217;s an example that works for me inside of the rails console:</p>
<pre class="brush: ruby; title: ; notranslate">
class Person &lt; ActiveRecord::Base
  validate :name, :pets, :presence =&gt; true
  serialize :pets, JSONColumn.new([])
end
</pre>
<p><b>Update:</b> Added <code>.clone</code> to the load method. HT <a href="https://twitter.com/#!/miyagawa/status/172430755874611200">@miyagawa</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://benatkin.com/2011/11/07/json-column-coder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resources for Learning Rails</title>
		<link>http://benatkin.com/2011/09/26/resources-for-learning-rails/</link>
		<comments>http://benatkin.com/2011/09/26/resources-for-learning-rails/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 03:21:04 +0000</pubDate>
		<dc:creator>Ben Atkin</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://benatkin.com/?p=947</guid>
		<description><![CDATA[Here is a list of a few awesome sites offering tools for learning Rails: PeepCode Pricing: Starts at $12 for one screencast; Twitter: @peepcode and @topfunky I bought my first PeepCode screencast back in 2008, before Rails and Merb merged. &#8230; <a href="http://benatkin.com/2011/09/26/resources-for-learning-rails/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here is a list of a few awesome sites offering tools for learning Rails:</p>
<h1><a href="http://peepcode.com/">PeepCode</a></h1>
<p><a href="http://peepcode.com/"><img src="http://benatkin.com/wp-content/uploads/2011/09/Screen-Shot-2011-09-26-at-6.12.41-PM.png" alt="" title="Screen Shot 2011-09-26 at 6.12.41 PM" width="241" height="101" class="alignnone size-full wp-image-948"></a></p>
<p><em>Pricing:</em> Starts at $12 for one screencast; <em>Twitter</em>: <a href="http://twitter.com/peepcode">@peepcode</a> and <a href="http://twitter.com/topfunky">@topfunky</a></p>
<p>I bought my first PeepCode screencast back in 2008, before Rails and Merb merged. It&#8217;s been around for a while, but <a href="https://twitter.com/topfunky">Geoffrey Grosenbach</a> does a great job of keeping it up-to-date. There are now a number of screencasts about current topics of interest to the Ruby on Rails community, including <a href="http://rubyonrails.org/">Rails 3</a>, <a href="http://documentcloud.github.com/backbone/">Backbone.js</a>, <a href="http://www.postgresql.org/">PostgreSQL</a>, <a href="http://coffeescript.com/">CoffeeScript</a>, and <a href="http://www.jbarnette.com/">John Barnette</a>.</p>
<h1><a href="http://railscasts.com/">Railscasts</a></h1>
<p><a href="http://railscasts.com/"><img src="http://benatkin.com/wp-content/uploads/2011/09/Screen-Shot-2011-09-26-at-6.31.31-PM.png" alt="" title="RailsCasts" width="432" height="69" class="alignnone size-full wp-image-949"></a></p>
<p><em>Pricing:</em> Free weekly episodes, additional weekly episodes and revised episodes for $9/mo (RailsCasts Pro); <em>Twitter: <a href="http://twitter.com/railscasts">@railscasts</a></em> </p>
<p><a href="http://railscasts.com/">Railscasts</a> is great for keeping up on Ruby On Rails, and because it&#8217;s free, it&#8217;s also great for recommending to people who are curious about Rails but not ready to spend money to help them learn it. <a href="https://twitter.com/#!/rbates">Ryan Bates</a> is great at explaining things. He covers a wide variety of topics in his screencasts and presents them in a nice format with code snippets.</p>
<p>Update: since I posted this Ryan Bates released <a href="http://railscasts.com/pro">Railscasts Pro</a>, which is fantastic!</p>
<h1><a href="http://ruby.railstutorial.org/">Ruby on Rails Tutorial</a></h1>
<p><a href="http://ruby.railstutorial.org/"><img src="http://benatkin.com/wp-content/uploads/2011/09/railstutorial.png" alt="" title="railstutorial" width="133" height="123" class="alignnone size-full wp-image-950"></a></p>
<p><em>Pricing:</em> $26 (book), $85 (screencasts), $95 (both); <em>Twitter: <a href="http://twitter.com/railstutorial">@railstutorial</a></em> </p>
<p><a href="http://www.michaelhartl.com/about">Michael Hartl</a> is a physicist who does a number of other things (see his about page) including Web Development with Ruby On Rails. I&#8217;ve watched all of his screencasts; they&#8217;re fantastic. He builds a web application TDD-style and teaches many different concepts including MVC and how TDD can help with authorization (which is trickier than authentication IMO).</p>
<h1><a href="http://railsapps.github.com/">Rails Apps</a></h1>
<p><a href="http://railsapps.github.com/"><img src="http://benatkin.com/wp-content/uploads/2011/09/rails_apps.png" alt="" title="rails_apps" width="127" height="133" class="alignnone size-full wp-image-951"></a></p>
<p><em>Pricing:</em> Free; <em>Twitter: <a href="http://twitter.com/rails_apps">@rails_apps</a></em> </p>
<p>I always thought that the <a href="https://github.com/thoughtbot/suspenders">Rails</a> <a href="https://github.com/quickleft/prologue">Starter</a> <a href="https://github.com/relevance/new-world-order">App</a> templates were cool, but they were missing something: <a href="https://github.com/railsapps/rails3-devise-rspec-cucumber/wiki/Tutorial">in-depth tutorials</a> and a <a href="http://railsapps.github.com/rails-examples-tutorials.html">comparison between the many different templates and quick-start tools</a>. <a href="http://danielkehoe.com/">Daniel Kehoe</a> has provided both and many more useful resources in his <a href="http://railsapps.github.com/">Rails Apps</a> GitHub account.</p>
<h1><a href="http://codeschool.com/">Code School</a></h1>
<p><a href="http://codeschool.com/"><img src="http://benatkin.com/wp-content/uploads/2011/09/code_school.png" alt="" title="code_school" width="325" height="81" class="alignnone size-full wp-image-952"></a></p>
<p><em>Pricing:</em> Free (one substantial free product), $45-55 (single paid products); <em>Twitter: <a href="http://twitter.com/codeschool">@codeschool</a></em> </p>
<p><a href="http://www.codeschool.com/">Code School</a> is a set of tutorials designed to help developers to quickly get up to speed building web applications. <a href="http://blog.envylabs.com/">Gregg Pollack</a> and <a href="http://envylabs.com/">Envy Labs</a> have been doing podcasts and screencasts for quite some time, and it&#8217;s not surprising that they still do it, because they&#8217;re very enthusiastic in front of a camera and a microphone.</p>
]]></content:encoded>
			<wfw:commentRss>http://benatkin.com/2011/09/26/resources-for-learning-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails Mnemonic: Scaffold Actions</title>
		<link>http://benatkin.com/2009/03/22/scaffold-mnemonic/</link>
		<comments>http://benatkin.com/2009/03/22/scaffold-mnemonic/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 01:18:54 +0000</pubDate>
		<dc:creator>Ben Atkin</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[pontifications]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[scaffolds]]></category>

		<guid isPermaLink="false">http://benatkin.com/weblog/?p=270</guid>
		<description><![CDATA[Over the last week I&#8217;ve been learning how to quickly develop simple applications in Rails without looking at API documentation. Each day I&#8217;ve been starting from scratch and seeing what I can create in an hour, only consulting documentation when &#8230; <a href="http://benatkin.com/2009/03/22/scaffold-mnemonic/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the last week I&#8217;ve been learning how to quickly develop simple applications in Rails without looking at API documentation. Each day I&#8217;ve been starting from scratch and seeing what I can create in an hour, only consulting documentation when I really need help. The first day I didn&#8217;t use scaffolds and I only got creating, reading, and deleting working with a single model. From the second day until today I&#8217;ve been using scaffolds. On Friday I got two models with a has_many association and image attachments (using paperclip) working. Each day I start from scratch, not copying or referencing the code from the previous day (though I do save the code). I think starting from scratch each time has helped me learn more quickly than I would if I were to use the last code each time.</p>
<p>Today I went back to working without scaffolds. Since I&#8217;ve been trying to read the documentation as little as possible while developing, I had to figure some things out for myself. One thing I had to think of was the list of actions to type when generating a controller. Here is what I came up with:</p>
<p><code>script/generate controller Planets index new show edit create update destroy</code></p>
<p>I&#8217;m obsessive-compulsive, so not only did I try to remember what actions are used in scaffolds, I tried to put them in an order that makes sense to me. I put index first because index is special. After that, there were two sensible approaches I could think of to order the remaining actions. I could either order by CRUD or order by whether or not the actions have views. Either way, I would use the other ordering technique within groups. I went with ordering first by whether or not actions have views, and then by CRUD. I started with the actions that have views because it&#8217;s nice to have them at the top when jumping from a view to its controller.</p>
<p>Here&#8217;s my thought process in a tabular format:</p>
<table border="1">
<tr>
<th>
</th>
<th><b>Create</b></th>
<th><b>Read</b></th>
<th><b>Update</b></th>
<th><b>Delete</b></th>
</tr>
<tr>
<th><b>Has View</b></th>
<td>new</td>
<td>show</td>
<td>edit</td>
<td>*</td>
</tr>
<tr>
<th><b>No View</b></th>
<td>create</td>
<td>**</td>
<td>update</td>
<td>destroy</td>
</tr>
</table>
<p>Notice that there are a couple of holes in the table. The first one (*) is missing because the interface for deleting is built into the index. It doesn&#8217;t have to be this way, and in fact varies widely on the web. It could have its own page, or it could be on the show or even edit page (Side note: I think it&#8217;s bad UI to put the delete button on the edit page because the edit form doesn&#8217;t fit into the workflow of deleting an item. The user may want to look at an item before deleting it to make sure it&#8217;s something they don&#8217;t need, but they&#8217;re unlikely to want to edit an item). The second one (**) is missing because in the simple case reading is achieved entirely through GET requests.</p>
<p>One thing that&#8217;s convenient about having the ones without views at the end is that it makes it easy for me to remember which skeleton views to delete after running the generate command. It&#8217;s the last three.</p>
<p>It used to take me a minute or a few to remember what actions I need, but now that I have this mnemonic it should only take a few seconds.</p>
<p>Now, I place a certain level of importance on conventions. After I came up with this mnemonic I looked at a scaffold to see how rails orders things. The only difference between my ICRUDCRUD ordering (index, CRUD with views, CRUD without) or ICRUCUD ordering and the standard scaffold ordering is that the <strong>show</strong> and <strong>new</strong> actions are swapped. So rails uses the RCUD ordering. Fair enough. I have pontificated on whether the ordering in CRUD makes sense or is a bacronym. Create and read are pretty useless without eachother. Below is the table with the RCUD ordering. I threw index into the empty cell. If you read the first line left to right, then move down, like a book, the order is the same as it is in a scaffold:</p>
<table border="1">
<tr>
<td colspan="5" style="text-align: center; font-weight: bold; font-size: 130%;">The order of actions in a scaffold</td>
</tr>
<tr>
<td style="color: blue">index</td>
<th><b>Read</b></th>
<th><b>Create</b></th>
<th><b>Update</b></th>
<th><b>Delete</b></th>
</tr>
<tr>
<th><b>Has View</b></th>
<td style="color: blue">show</td>
<td style="color: blue">new</td>
<td style="color: blue">edit</td>
<td>*</td>
</tr>
<tr>
<th><b>No View</b></th>
<td>**</td>
<td style="color: blue">create</td>
<td style="color: blue">update</td>
<td style="color: blue">destroy</td>
</tr>
</table>
<p>Now, how to remember RCUD? Well, remembering to swap C and R is one way, but I prefer to think of a Rails cow chewing its CUD.</p>
<p><img src="http://benatkin.com/weblog/wp-content/uploads/2009/03/rcud.jpg" alt="rcud" title="rcud" width="600" height="399" class="alignnone size-full wp-image-274"><small>Original image from <a href="http://www.flickr.com/photos/82114311@N00/250130390/">cerulean5000</a> on flickr. Used by Creative Commons license.</small></p>
]]></content:encoded>
			<wfw:commentRss>http://benatkin.com/2009/03/22/scaffold-mnemonic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails 3 and merb slices</title>
		<link>http://benatkin.com/2009/01/20/rails-3-slice/</link>
		<comments>http://benatkin.com/2009/01/20/rails-3-slice/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 02:55:42 +0000</pubDate>
		<dc:creator>Ben Atkin</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[merb]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[slices]]></category>

		<guid isPermaLink="false">http://www.benatkin.com/weblog/?p=205</guid>
		<description><![CDATA[I&#8217;m at the Merb and Rails 3 community forum with Yehuda Katz and Matt Amionetti right now. It&#8217;s an event with no agenda; they just opened the floor to questions. I asked them a couple of questions about Merb slices. &#8230; <a href="http://benatkin.com/2009/01/20/rails-3-slice/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m at the <a href="http://upcoming.yahoo.com/event/1490729/">Merb and Rails 3 community forum</a> with Yehuda Katz and Matt Amionetti right now. It&#8217;s an event with no agenda; they just opened the floor to questions. I asked them a couple of questions about Merb slices.</p>
<p>First, I asked them what would happen with slices in Rails 3. They explained that slices are going away in future versions of Rails and Merb, but the functionality will still be there. Instead of having slices, applications will simply be &#8220;mountable&#8221; within other applications.</p>
<p>I then asked if components such as models could be shared between slices. Yehuda said that their goal was to give all applications a namespace by default. He then went on to say that hopefully there will be no need to refer to an application&#8217;s namespace from within the application.</p>
<p>This sounds great! With a few contributions from the community, it should be at least as easy to install multiple apps into a site and get them sharing stuff as it currently is in Django.</p>
]]></content:encoded>
			<wfw:commentRss>http://benatkin.com/2009/01/20/rails-3-slice/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

