<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>config/dependencies.yml</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,18 @@
-config/database.yml*
-db/*.sqlite3
-app/plugins/*
-public/plugins*
-public/favicon.ico
+.DS_Store
 log/*
+tmp/*
+TAGS
+*~
+.#*
+schema/schema.rb
+schema/*_structure.sql
+schema/*.sqlite3
+schema/*.sqlite
+schema/*.db
+*.sqlite
+*.sqlite3
+*.db
+src/*
+.hgignore
+.hg/*
+.svn/*
\ No newline at end of file</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -1,25 +1,35 @@
 require 'rubygems'
-Gem.clear_paths
-Gem.path.unshift(File.join(File.dirname(__FILE__), &quot;gems&quot;))
-
-require 'rake'
 require 'rake/rdoctask'
-require 'rake/testtask'
-require 'spec/rake/spectask'
-require 'fileutils'
+
 require 'merb-core'
-require 'rubigen'
+require 'merb-core/tasks/merb'
+
 include FileUtils
 
 # Load the basic runtime dependencies; this will include 
 # any plugins and therefore plugin rake tasks.
 init_env = ENV['MERB_ENV'] || 'rake'
 Merb.load_dependencies(:environment =&gt; init_env)
-
+     
 # Get Merb plugins and dependencies
-Merb::Plugins.rakefiles.each { |r| require r }
+Merb::Plugins.rakefiles.each { |r| require r } 
 
-desc &quot;start runner environment&quot;
+# Load any app level custom rakefile extensions from lib/tasks
+tasks_path = File.join(File.dirname(__FILE__), &quot;lib&quot;, &quot;tasks&quot;)
+rake_files = Dir[&quot;#{tasks_path}/*.rake&quot;]
+rake_files.each{|rake_file| load rake_file }
+
+desc &quot;Start runner environment&quot;
 task :merb_env do
   Merb.start_environment(:environment =&gt; init_env, :adapter =&gt; 'runner')
-end
\ No newline at end of file
+end
+
+require 'spec/rake/spectask'
+require 'merb-core/test/tasks/spectasks'
+desc 'Default: run spec examples'
+task :default =&gt; 'spec'
+
+##############################################################################
+# ADD YOUR CUSTOM TASKS IN /lib/tasks
+# NAME YOUR RAKE FILES file_name.rake
+##############################################################################</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,4 @@
 class Exceptions &lt; Application
-  layout :exceptions
-  
-  # handle internal server errors
-  def internal_server_error
-    render :format =&gt; :html
-  end
   
   # handle NotFound exceptions (404)
   def not_found
@@ -15,4 +9,5 @@ class Exceptions &lt; Application
   def not_acceptable
     render :format =&gt; :html
   end
-end
+
+end
\ No newline at end of file</diff>
      <filename>app/controllers/exceptions.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,63 +1,17 @@
+# This is a default user class used to activate merb-auth.  Feel free to change from a User to 
+# Some other class, or to remove it altogether.  If removed, merb-auth may not work by default.
+#
+# Don't forget that by default the salted_user mixin is used from merb-more
+# You'll need to setup your db as per the salted_user mixin, and you'll need
+# To use :password, and :password_confirmation when creating a user
+#
+# see config/merb-auth/setup.rb to see how to disable the salted_user mixin
+# 
+# You will need to setup your database and create a user.
 class User
   include DataMapper::Resource
- 
-  property :id, Serial
-  property :login, String
-  property :name, String
-  property :email, String
-  property :crypted_password, String, :length =&gt; 150
-  property :salt, String, :length =&gt; 150
-  property :active, Boolean, :default =&gt; false
-  # property :identity_url, String
-  property :time_zone, String
-  property :default_formatter, String
-
-  after :save, :set_create_activity
-  after :save, :set_update_activity
-
   
-  validates_present :login, :email
-  validates_is_unique :login, :email
-  validates_format :email, :as =&gt; :email_address
+  property :id,     Serial
+  property :login,  String
   
-  attr_accessor :password, :password_confirmation
-  validates_is_confirmed :password
-  
-  before :save, :encrypt_password
-  
-  def active?
-    !!self.active
-  end
- 
-  def self.encrypt(salt, password = nil)
-    Digest::SHA1.hexdigest(&quot;--#{salt}--#{password}--&quot;)
-  end
-  
-  def self.authenticate(login, password)
-    u = self.first(:login =&gt; login)
-    return nil unless u
-    u.crypted_password == encrypt(u.salt, password) ? u : nil
-  end
-  
-  def encrypt_password
-    self.salt ||= Digest::SHA1.hexdigest(&quot;--#{Time.now.to_s}--#{login}--&quot;)
-    self.crypted_password ||= User.encrypt(salt, password)
-  end
-
-  def set_create_activity
-    if new_record?
-      a = Activity.new
-      a.message = &quot;User \&quot;#{self.login}\&quot; created&quot;
-      a.save
-    end
-  end
-
-  def set_update_activity
-    unless new_record?
-      a = Activity.new
-      a.message = &quot;User \&quot;#{self.login}\&quot; updated&quot;
-      a.save
-    end
-  end
-  
-end
\ No newline at end of file
+end</diff>
      <filename>app/models/user.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,80 +1,216 @@
-&lt;h1&gt;&lt;%= @exception_name %&gt;&lt;/h1&gt;
-&lt;% if show_details = ::Merb::Config[:exception_details] -%&gt;
-	&lt;h2&gt;&lt;%= params[:exception].message %&gt;&lt;/h2&gt;
-	&lt;h3&gt;Parameters&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_params].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_params].empty? %&gt;
-	&lt;/ul&gt;
-
-	&lt;h3&gt;Session&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_session].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_session].empty? %&gt;			
-	&lt;/ul&gt;
-
-	&lt;h3&gt;Cookies&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_cookies].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_cookies].empty? %&gt;			
-	&lt;/ul&gt;
-&lt;% else -%&gt;
-	&lt;h2&gt;There has been an error!&lt;/h2&gt;
-	&lt;h3&gt;What next?&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;li&gt;Go &lt;a href=&quot;javascript:history.go(-1)&quot;&gt;back&lt;/a&gt; and retry what you were doing - the problem may be temporary!&lt;/li&gt;
-		&lt;li&gt;If it still happens, drop the blog owner a note to let them know!&lt;/li&gt;
-	&lt;/ul&gt;
-&lt;% end -%&gt;
-&lt;div class=&quot;break&quot;&gt;&lt;/div&gt;
-&lt;% if show_details %&gt;
-	&lt;table class=&quot;trace&quot;&gt;
-		&lt;% params[:exception].backtrace.each_with_index do |line, index| %&gt;
-			&lt;tbody class=&quot;close&quot;&gt;
-				&lt;tr class=&quot;file&quot;&gt;
-					&lt;td class=&quot;expand&quot;&gt;&lt;/td&gt;
-					&lt;td class=&quot;path&quot;&gt;
-						&lt;%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %&gt;
-						&lt;% unless line.match(/\.erb:/) %&gt;
-							in &quot;&lt;strong&gt;&lt;%= line.match(/:in `(.+)'$/)[1] rescue '?' %&gt;&lt;/strong&gt;&quot;
-              			&lt;% else %&gt;
-                			(&lt;strong&gt;ERB Template&lt;/strong&gt;)
-              			&lt;% end %&gt;
-					&lt;/td&gt;
-					&lt;td class=&quot;line&quot;&gt;
-						&lt;a href=&quot;txmt://open?url=file://&lt;%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%&gt;&amp;amp;line=&lt;%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %&gt;&quot;&gt;&lt;%=lineno%&gt;&lt;/a&gt;&amp;nbsp;
-					&lt;/td&gt; 
-				&lt;/tr&gt;
-				&lt;tr class=&quot;source&quot;&gt;
-					&lt;td class=&quot;collapse&quot;&gt;&lt;/td&gt;
-					&lt;td class=&quot;code&quot; colspan=&quot;2&quot;&gt;&lt;% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %&gt;
+&lt;html&gt;
+&lt;head&gt;
+	&lt;meta http-equiv=&quot;Content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
+	&lt;title&gt;&lt;%= @exception_name %&gt;&lt;/title&gt;
+	&lt;style type=&quot;text/css&quot; media=&quot;screen&quot;&gt;
+		body {
+			font-family:arial;
+			font-size:11px;
+		}
+		h1 {
+			font-size:48px;
+			letter-spacing:-4px;
+			margin:0;
+			line-height:36px;
+			color:#333;
+		}
+			h1 sup {
+				font-size: 0.5em;
+			}
+			h1 sup.error_500, h1 sup.error_400 {
+				color:#990E05;
+			}
+			h1 sup.error_100, h1 sup.error_200 {
+				color:#00BF10;
+			}
+			h1 sup.error_300 {
+				/* pretty sure you cant 'see' status 300 
+				errors but if you could I think they 
+				would be blue */
+				color:#1B2099;
+			}
+		h2 {
+			font-size:36px;
+			letter-spacing:-3px;
+			margin:0;
+			line-height:28px;
+			color:#444;
+		}
+		a, a:visited {
+			color:#00BF10;
+		}
+		.internalError {
+			width:800px;
+			margin:50px auto;
+		}
+		.header {
+			border-bottom:10px solid #333;
+			margin-bottom:1px;
+			background-image: url(&quot;data:image/gif;base64,R0lGODlhAwADAIAAAP///8zMzCH5BAAAAAAALAAAAAADAAMAAAIEBHIJBQA7&quot;);
+			padding:20px;
+		}
+		table.trace {
+			width:100%;
+			font-family:courier, monospace;
+			letter-spacing:-1px;
+			border-collapse: collapse;
+			border-spacing:0;
+		}
+		table.trace tr td{
+			padding:0;
+			height:26px;
+			font-size:13px;
+			vertical-align:middle;
+		}
+		table.trace tr.file{
+			border-top:2px solid #fff;
+			background-color:#F3F3F3;
+		}
+		table.trace tr.source {
+			background-color:#F8F8F8;
+			display:none;
+		}
+		table.trace .open tr.source {
+			display:table-row;
+		}
+			table.trace tr.file td.expand {
+				width:23px;
+				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAIAAABvSEP3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqMVL+TwUAYxaRIOlEhlZHGDAUzzOQ61+AqXMV1lJSU7q/QRqm8KFUcJTNn5qJkaPyoKKVz7y4mF8na5Kt29tt9+/Z97/u81+vVQ4r9frdarS6Xi7ETDIZisRjxMGPfmk4niNPpZE+xLAugbPaZ53nzvtfMBe/3+/3dbuehBrAKhZdUKkVAWa9Xsiybv0CPZDJZLr/qa5/BwgwRjYqOKIvFYjQa/aNommZh0Ww2K5UqzwfoQOPxaLPZ3FAmk0+7lplMpt1u53J5OpBOR0eZEE9wHJfP5zud93g88QhluwWbjW+5VOmKBgKBer3eaDTDYeGBQF8+x7rqIYoiPgixWJazpA6HA+MSxRArkUgMh0M409g8Ho8+9wYxxCqVSq1W26EDHGM2m4HOHQrEc38f/Yn7cLmlIRhBENzcx8cVRZnPZ/YUep2BWkjTIfA+PKVpZAXR5QxsjiqCKvGEqqp443w+0dvy17swqD0HB3S73V5PpkNg1qBqt8kwGCjmPkinM0QJbIoEa7U6UG6ToVgs4V9G2g0ESoP5Aoi7KYX5oCgf8IKbkvn9/mr1LRQKESamzgJy0g0tSZIuB3nuGqRU9Vv9C4sKkUhEkp4soxvxI8AAhWrrtXa3X8EAAAAASUVORK5CYII=);
+				background-position:top left;
+				background-repeat:no-repeat;
+			}
+			table.trace .open tr.file td.expand {
+				width:19px;
+				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNrslK1ywkAUhcMOBomEOiSdqLxEBJX0NaijOsjyHGGmCGyQQYaiiiw4gktkcOmZbpsuuzQ/M5XnqJ2d3S/n3nM3rTzPLUP7/Tt0+pLcGQwG3W53OLyHzPMtjYL7q9UqSRLrD4E1Gj1orCvKYuFHUWTVkOM44/HjDcp8/lL4r6NerzeZPMm1KFw0QkDn83m5fP2lHA4fNQvRtNvtjsfDd0WzmSfb2e/fdTqdOvdh/HLJZLOn0+d2HJ+KRGzbdl23EpFlmed5cp2maRzHQq1lvQ5KMi6EUZBGfup6E1pTfd+vrGW7jbQ2C9hTt9BpqNyIWaAwAy6xg2eBz5iRC/NomiZhGN5sqmnkauo0BUGgVQoBjQ80oCACgNQdZHfTYBkF2mxCtWWAqunWpahxIDUt3QYUxIFQpJHyIWpXjinabKbbwItMHT+NyjchrP8QKaSQQgoppJBCCimkkEIKKaSQQgoppJBCCimkkEIKKaSo+hRgAEFD17X08O2NAAAAAElFTkSuQmCC);
+				background-position:top left;
+				background-repeat:no-repeat;				
+			}
+			table.trace tr.source td.collapse {
+				width:19px;
+				background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrs0zFygkAUBmBlUkgJHdABlQwVkVJKKUxBYWbkALTxMJwhltyDFkss03IF8pudIcwaDaDl/6pd2P327b7d+eHwMXs4lNkzggoVKlSoUKFChQoVKlSoUKFChQoVKlSoUKFChQqVEYqm6ft9+qiSJEkYho7jTlcw2fd9NOI4nq4gEdFwXXe1Cqco63VkWVbXRTqLhTpOwQRpF7quR1E0TgGhqvLKUFCyoQqG/rks3O6kZKW/eRFpevOCoGTXVTcMQ5EyxyDEkML1c5RzuZOICIyXqn7JBVez6282MWrx731HOv2qB8Hri2lamNk0DfpVVdV1Peodappmmua8bdvzuc7zfNprzrLMth1FnGh/X8MjCAIQv/cFz/+65PcDh7rbvYv2ZUfdj+PxsyzLgVl0hKwgTqeqKApx2LeOc7t98zyv/1FWOgvx9RPii23bmL9cetJ8Ed8CDAC6aFW8bCzFhwAAAABJRU5ErkJggg==);
+				background-position:bottom left;
+				background-repeat:no-repeat;	
+				background-color:#6F706F;			
+			}
+			table.trace tr td.path {
+				padding-left:10px;
+			}
+			table.trace tr td.code {
+				padding-left:35px;
+				white-space: pre;
+				line-height:9px;
+				padding-bottom:10px;				
+			}
+				table.trace tr td.code em {
+					font-weight:bold;
+					color:#00BF10;
+				}
+				table.trace tr td.code a {
+				  width: 20px;
+				  float: left;
+				}
+				table.trace tr td.code .more {
+					color:#666;
+				}
+			table.trace tr td.line {
+				width:30px;
+				text-align:right;
+				padding-right:4px;
+			}
+		.footer {
+			margin-top:5px;
+			font-size:11px;
+			color:#444;
+			text-align:right;
+		}
+	&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+	&lt;div class=&quot;internalError&quot;&gt;
+		
+		&lt;div class=&quot;header&quot;&gt;
+			&lt;h1&gt;&lt;%= @exception_name %&gt; &lt;sup class=&quot;error_&lt;%= @exception.class::STATUS %&gt;&quot;&gt;&lt;%= @exception.class::STATUS %&gt;&lt;/sup&gt;&lt;/h1&gt;
+			&lt;% if show_details = ::Merb::Config[:exception_details] -%&gt;
+				&lt;h2&gt;&lt;%=h @exception.message %&gt;&lt;/h2&gt;
+			&lt;% else -%&gt;
+				&lt;h2&gt;Sorry about that...&lt;/h2&gt;
+			&lt;% end -%&gt;
+			&lt;h3&gt;Parameters&lt;/h3&gt;
+			&lt;ul&gt;
+			&lt;% params[:original_params].each do |param, value| %&gt;
+				&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
+			&lt;% end %&gt;
+			&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_params].empty? %&gt;
+			&lt;/ul&gt;
+			
+			&lt;h3&gt;Session&lt;/h3&gt;
+			&lt;ul&gt;
+			&lt;% params[:original_session].each do |param, value| %&gt;
+				&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
+			&lt;% end %&gt;
+			&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_session].empty? %&gt;			
+			&lt;/ul&gt;
+			
+			&lt;h3&gt;Cookies&lt;/h3&gt;
+			&lt;ul&gt;
+			&lt;% params[:original_cookies].each do |param, value| %&gt;
+				&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
+			&lt;% end %&gt;
+			&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_cookies].empty? %&gt;			
+			&lt;/ul&gt;			
+		&lt;/div&gt;
+		
+	&lt;% if show_details %&gt;
+		&lt;table class=&quot;trace&quot;&gt;
+			&lt;% @exception.backtrace.each_with_index do |line, index| %&gt;
+				&lt;tbody class=&quot;close&quot;&gt;
+					&lt;tr class=&quot;file&quot;&gt;
+						&lt;td class=&quot;expand&quot;&gt;
+						&lt;/td&gt;
+						&lt;td class=&quot;path&quot;&gt;
+							&lt;%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %&gt;
+							&lt;% unless line.match(/\.erb:/) %&gt;
+                in &quot;&lt;strong&gt;&lt;%= line.match(/:in `(.+)'$/)[1] rescue '?' %&gt;&lt;/strong&gt;&quot;
+              &lt;% else %&gt;
+                (&lt;strong&gt;ERB Template&lt;/strong&gt;)
+              &lt;% end %&gt;
+						&lt;/td&gt;
+						&lt;td class=&quot;line&quot;&gt;
+							&lt;a href=&quot;txmt://open?url=file://&lt;%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%&gt;&amp;amp;line=&lt;%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %&gt;&quot;&gt;&lt;%=lineno%&gt;&lt;/a&gt;&amp;nbsp;
+						&lt;/td&gt; 
+					&lt;/tr&gt;
+					&lt;tr class=&quot;source&quot;&gt;
+						&lt;td class=&quot;collapse&quot;&gt;
+						&lt;/td&gt;
+						&lt;td class=&quot;code&quot; colspan=&quot;2&quot;&gt;&lt;% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %&gt;
 &lt;a href=&quot;txmt://open?url=file://&lt;%=file%&gt;&amp;amp;line=&lt;%=llineno%&gt;&quot;&gt;&lt;%= llineno %&gt;&lt;/a&gt;&lt;%='&lt;em&gt;' if llineno==lineno.to_i %&gt;&lt;%= lcode.size &gt; 90 ? CGI.escapeHTML(lcode[0..90])+'&lt;span class=&quot;more&quot;&gt;......&lt;/span&gt;' : CGI.escapeHTML(lcode) %&gt;&lt;%='&lt;/em&gt;' if llineno==lineno.to_i %&gt;
 &lt;% end %&gt;
-					&lt;/td&gt;
-				&lt;/tr&gt;
-			&lt;/tbody&gt;
-		&lt;% end %&gt;
-	&lt;/table&gt;
-	&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
-		// swap the open &amp; closed classes
-		els = document.getElementsByTagName('td');
-		for(i=0; i&lt;els.length; i++){
-			if(els[i].className=='expand' || els[i].className=='collapse'){
-				els[i].onclick = function(e){
-					tbody = this.parentNode.parentNode;
-					if(tbody.className=='open'){
-						tbody.className='closed';
-					}else{
-						tbody.className='open';
+
+&lt;/td&gt;
+					&lt;/tr&gt;
+				&lt;/tbody&gt;
+			&lt;% end %&gt;
+		&lt;/table&gt;
+		&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
+			// swop the open &amp; closed classes
+			els = document.getElementsByTagName('td');
+			for(i=0; i&lt;els.length; i++){
+				if(els[i].className=='expand' || els[i].className=='collapse'){
+					els[i].onclick = function(e){
+						tbody = this.parentNode.parentNode;
+						if(tbody.className=='open'){
+							tbody.className='closed';
+						}else{
+							tbody.className='open';
+						}
 					}
 				}
 			}
-		}
-	&lt;/script&gt;
-&lt;% end %&gt;
+		&lt;/script&gt;
+	&lt;% end %&gt;
+	&lt;div class=&quot;footer&quot;&gt;
+		lots of love, from &lt;a href=&quot;#&quot;&gt;merb&lt;/a&gt;
+	&lt;/div&gt;
+	&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
\ No newline at end of file</diff>
      <filename>app/views/exceptions/internal_server_error.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,80 +1,63 @@
-&lt;h1&gt;&lt;%= @exception_name %&gt;&lt;/h1&gt;
-&lt;% if show_details = ::Merb::Config[:exception_details] -%&gt;
-	&lt;h2&gt;&lt;%= params[:exception].message %&gt;&lt;/h2&gt;
-	&lt;h3&gt;Parameters&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_params].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_params].empty? %&gt;
-	&lt;/ul&gt;
+&lt;div id=&quot;container&quot;&gt;
+  &lt;div id=&quot;header-container&quot;&gt;
+    &lt;img src=&quot;/images/merb.jpg&quot; /&gt;
+    &lt;!-- &lt;h1&gt;Mongrel + Erb&lt;/h1&gt; --&gt;
+    &lt;h2&gt;pocket rocket web framework&lt;/h2&gt;
+    &lt;hr /&gt;
+  &lt;/div&gt;
 
-	&lt;h3&gt;Session&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_session].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_session].empty? %&gt;			
-	&lt;/ul&gt;
+  &lt;div id=&quot;left-container&quot;&gt;
+    &lt;h3&gt;Exception:&lt;/h3&gt;
+    &lt;p&gt;&lt;%= request.exceptions.first.message %&gt;&lt;/p&gt;
+  &lt;/div&gt;
 
-	&lt;h3&gt;Cookies&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_cookies].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_cookies].empty? %&gt;			
-	&lt;/ul&gt;
-&lt;% else -%&gt;
-&lt;h2&gt;&lt;%= request.env[&quot;REQUEST_URI&quot;] %&gt; not acceptable!&lt;/h2&gt;
-	&lt;h3&gt;What next?&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;li&gt;Please check the url you were attempting to find, to ensure it's correct&lt;/li&gt;
-		&lt;li&gt;If you think there is a problem, drop the blog owner a note to let them know!&lt;/li&gt;
-	&lt;/ul&gt;
-&lt;% end -%&gt;
-&lt;div class=&quot;break&quot;&gt;&lt;/div&gt;
-&lt;% if show_details %&gt;
-	&lt;table class=&quot;trace&quot;&gt;
-		&lt;% params[:exception].backtrace.each_with_index do |line, index| %&gt;
-			&lt;tbody class=&quot;close&quot;&gt;
-				&lt;tr class=&quot;file&quot;&gt;
-					&lt;td class=&quot;expand&quot;&gt;&lt;/td&gt;
-					&lt;td class=&quot;path&quot;&gt;
-						&lt;%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %&gt;
-						&lt;% unless line.match(/\.erb:/) %&gt;
-							in &quot;&lt;strong&gt;&lt;%= line.match(/:in `(.+)'$/)[1] rescue '?' %&gt;&lt;/strong&gt;&quot;
-              			&lt;% else %&gt;
-                			(&lt;strong&gt;ERB Template&lt;/strong&gt;)
-              			&lt;% end %&gt;
-					&lt;/td&gt;
-					&lt;td class=&quot;line&quot;&gt;
-						&lt;a href=&quot;txmt://open?url=file://&lt;%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%&gt;&amp;amp;line=&lt;%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %&gt;&quot;&gt;&lt;%=lineno%&gt;&lt;/a&gt;&amp;nbsp;
-					&lt;/td&gt; 
-				&lt;/tr&gt;
-				&lt;tr class=&quot;source&quot;&gt;
-					&lt;td class=&quot;collapse&quot;&gt;&lt;/td&gt;
-					&lt;td class=&quot;code&quot; colspan=&quot;2&quot;&gt;&lt;% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %&gt;
-&lt;a href=&quot;txmt://open?url=file://&lt;%=file%&gt;&amp;amp;line=&lt;%=llineno%&gt;&quot;&gt;&lt;%= llineno %&gt;&lt;/a&gt;&lt;%='&lt;em&gt;' if llineno==lineno.to_i %&gt;&lt;%= lcode.size &gt; 90 ? CGI.escapeHTML(lcode[0..90])+'&lt;span class=&quot;more&quot;&gt;......&lt;/span&gt;' : CGI.escapeHTML(lcode) %&gt;&lt;%='&lt;/em&gt;' if llineno==lineno.to_i %&gt;
-&lt;% end %&gt;
-					&lt;/td&gt;
-				&lt;/tr&gt;
-			&lt;/tbody&gt;
-		&lt;% end %&gt;
-	&lt;/table&gt;
-	&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
-		// swap the open &amp; closed classes
-		els = document.getElementsByTagName('td');
-		for(i=0; i&lt;els.length; i++){
-			if(els[i].className=='expand' || els[i].className=='collapse'){
-				els[i].onclick = function(e){
-					tbody = this.parentNode.parentNode;
-					if(tbody.className=='open'){
-						tbody.className='closed';
-					}else{
-						tbody.className='open';
-					}
-				}
-			}
-		}
-	&lt;/script&gt;
-&lt;% end %&gt;
+  &lt;div id=&quot;main-container&quot;&gt;
+    &lt;h3&gt;Why am I seeing this page?&lt;/h3&gt;
+    &lt;p&gt;Merb couldn't find an appropriate content_type to return,
+      based on what you said was available via provides() and
+      what the client requested.&lt;/p&gt;
+
+    &lt;h3&gt;How to add a mime-type&lt;/h3&gt;
+    &lt;pre&gt;&lt;code&gt;
+      Merb.add_mime_type :pdf, :to_pdf, %w[application/pdf], &amp;quot;Content-Encoding&amp;quot; =&amp;gt; &amp;quot;gzip&amp;quot;
+    &lt;/code&gt;&lt;/pre&gt;
+    &lt;h3&gt;What this means is:&lt;/h3&gt;
+    &lt;ul&gt;
+      &lt;li&gt;Add a mime-type for :pdf&lt;/li&gt;
+      &lt;li&gt;Register the method for converting objects to PDF as &lt;code&gt;#to_pdf&lt;/code&gt;.&lt;/li&gt;
+      &lt;li&gt;Register the incoming mime-type &quot;Accept&quot; header as &lt;code&gt;application/pdf&lt;/code&gt;.&lt;/li&gt;
+      &lt;li&gt;Specify a new header for PDF types so it will set &lt;code&gt;Content-Encoding&lt;/code&gt; to gzip.&lt;/li&gt;
+    &lt;/ul&gt;
+
+    &lt;h3&gt;You can then do:&lt;/h3&gt;
+    &lt;pre&gt;&lt;code&gt;
+      class Foo &amp;lt; Application
+        provides :pdf
+      end
+    &lt;/code&gt;&lt;/pre&gt;
+
+    &lt;h3&gt;Where can I find help?&lt;/h3&gt;
+    &lt;p&gt;If you have any questions or if you can't figure something out, please take a
+      look at our &lt;a href=&quot;http://merbivore.com/&quot;&gt; project page&lt;/a&gt;,
+      feel free to come chat at irc.freenode.net, channel #merb,
+      or post to &lt;a href=&quot;http://groups.google.com/group/merb&quot;&gt;merb mailing list&lt;/a&gt;
+      on Google Groups.&lt;/p&gt;
+      
+    &lt;h3&gt;What if I've found a bug?&lt;/h3&gt;
+    &lt;p&gt;If you want to file a bug or make your own contribution to Merb,
+      feel free to register and create a ticket at our
+      &lt;a href=&quot;http://merb.lighthouseapp.com/&quot;&gt;project development page&lt;/a&gt;
+      on Lighthouse.&lt;/p&gt;
+
+    &lt;h3&gt;How do I edit this page?&lt;/h3&gt;
+    &lt;p&gt;You can change what people see when this happens by editing &lt;tt&gt;app/views/exceptions/not_acceptable.html.erb&lt;/tt&gt;.&lt;/p&gt; 
+
+  &lt;/div&gt;
+
+  &lt;div id=&quot;footer-container&quot;&gt;
+    &lt;hr /&gt;
+    &lt;div class=&quot;left&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;right&quot;&gt;&amp;copy; 2008 the merb dev team&lt;/div&gt;
+    &lt;p&gt;&amp;nbsp;&lt;/p&gt;
+  &lt;/div&gt;
+&lt;/div&gt;</diff>
      <filename>app/views/exceptions/not_acceptable.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -1,80 +1,47 @@
-&lt;h1&gt;&lt;%= @exception_name %&gt;&lt;/h1&gt;
-&lt;% if show_details = ::Merb::Config[:exception_details] -%&gt;
-	&lt;h2&gt;&lt;%= params[:exception].message %&gt;&lt;/h2&gt;
-	&lt;h3&gt;Parameters&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_params].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_params].empty? %&gt;
-	&lt;/ul&gt;
+&lt;div id=&quot;container&quot;&gt;
+  &lt;div id=&quot;header-container&quot;&gt;
+    &lt;img src=&quot;/images/merb.jpg&quot; /&gt;
+    &lt;!-- &lt;h1&gt;Mongrel + Erb&lt;/h1&gt; --&gt;
+    &lt;h2&gt;pocket rocket web framework&lt;/h2&gt;
+    &lt;hr /&gt;
+  &lt;/div&gt;
 
-	&lt;h3&gt;Session&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_session].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_session].empty? %&gt;			
-	&lt;/ul&gt;
+  &lt;div id=&quot;left-container&quot;&gt;
+    &lt;h3&gt;Exception:&lt;/h3&gt;
+    &lt;p&gt;&lt;%= request.exceptions.first.message %&gt;&lt;/p&gt;
+  &lt;/div&gt;
 
-	&lt;h3&gt;Cookies&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;% params[:original_cookies].each do |param, value| %&gt;
-			&lt;li&gt;&lt;strong&gt;&lt;%= param %&gt;:&lt;/strong&gt; &lt;%= value.inspect %&gt;&lt;/li&gt;
-		&lt;% end %&gt;
-		&lt;%= &quot;&lt;li&gt;None&lt;/li&gt;&quot; if params[:original_cookies].empty? %&gt;			
-	&lt;/ul&gt;
-&lt;% else -%&gt;
-&lt;h2&gt;&lt;%= request.env[&quot;REQUEST_URI&quot;] %&gt; not found!&lt;/h2&gt;
-	&lt;h3&gt;What next?&lt;/h3&gt;
-	&lt;ul&gt;
-		&lt;li&gt;Please check the url you were attempting to find, to ensure it's correct&lt;/li&gt;
-		&lt;li&gt;If you think there is a problem, drop the blog owner a note to let them know!&lt;/li&gt;
-	&lt;/ul&gt;
-&lt;% end -%&gt;
-&lt;div class=&quot;break&quot;&gt;&lt;/div&gt;
-&lt;% if show_details %&gt;
-	&lt;table class=&quot;trace&quot;&gt;
-		&lt;% params[:exception].backtrace.each_with_index do |line, index| %&gt;
-			&lt;tbody class=&quot;close&quot;&gt;
-				&lt;tr class=&quot;file&quot;&gt;
-					&lt;td class=&quot;expand&quot;&gt;&lt;/td&gt;
-					&lt;td class=&quot;path&quot;&gt;
-						&lt;%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %&gt;
-						&lt;% unless line.match(/\.erb:/) %&gt;
-							in &quot;&lt;strong&gt;&lt;%= line.match(/:in `(.+)'$/)[1] rescue '?' %&gt;&lt;/strong&gt;&quot;
-              			&lt;% else %&gt;
-                			(&lt;strong&gt;ERB Template&lt;/strong&gt;)
-              			&lt;% end %&gt;
-					&lt;/td&gt;
-					&lt;td class=&quot;line&quot;&gt;
-						&lt;a href=&quot;txmt://open?url=file://&lt;%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%&gt;&amp;amp;line=&lt;%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %&gt;&quot;&gt;&lt;%=lineno%&gt;&lt;/a&gt;&amp;nbsp;
-					&lt;/td&gt; 
-				&lt;/tr&gt;
-				&lt;tr class=&quot;source&quot;&gt;
-					&lt;td class=&quot;collapse&quot;&gt;&lt;/td&gt;
-					&lt;td class=&quot;code&quot; colspan=&quot;2&quot;&gt;&lt;% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %&gt;
-&lt;a href=&quot;txmt://open?url=file://&lt;%=file%&gt;&amp;amp;line=&lt;%=llineno%&gt;&quot;&gt;&lt;%= llineno %&gt;&lt;/a&gt;&lt;%='&lt;em&gt;' if llineno==lineno.to_i %&gt;&lt;%= lcode.size &gt; 90 ? CGI.escapeHTML(lcode[0..90])+'&lt;span class=&quot;more&quot;&gt;......&lt;/span&gt;' : CGI.escapeHTML(lcode) %&gt;&lt;%='&lt;/em&gt;' if llineno==lineno.to_i %&gt;
-&lt;% end %&gt;
-					&lt;/td&gt;
-				&lt;/tr&gt;
-			&lt;/tbody&gt;
-		&lt;% end %&gt;
-	&lt;/table&gt;
-	&lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
-		// swap the open &amp; closed classes
-		els = document.getElementsByTagName('td');
-		for(i=0; i&lt;els.length; i++){
-			if(els[i].className=='expand' || els[i].className=='collapse'){
-				els[i].onclick = function(e){
-					tbody = this.parentNode.parentNode;
-					if(tbody.className=='open'){
-						tbody.className='closed';
-					}else{
-						tbody.className='open';
-					}
-				}
-			}
-		}
-	&lt;/script&gt;
-&lt;% end %&gt;
+  &lt;div id=&quot;main-container&quot;&gt;
+    &lt;h3&gt;Welcome to Merb!&lt;/h3&gt;
+    &lt;p&gt;Merb is a light-weight MVC framework written in Ruby.  We hope you enjoy it.&lt;/p&gt;
+    
+    &lt;h3&gt;Where can I find help?&lt;/h3&gt;
+    &lt;p&gt;If you have any questions or if you can't figure something out, please take a
+      look at our &lt;a href=&quot;http://merbivore.com/&quot;&gt; project page&lt;/a&gt;,
+      feel free to come chat at irc.freenode.net, channel #merb,
+      or post to &lt;a href=&quot;http://groups.google.com/group/merb&quot;&gt;merb mailing list&lt;/a&gt;
+      on Google Groups.&lt;/p&gt;
+      
+    &lt;h3&gt;What if I've found a bug?&lt;/h3&gt;
+    &lt;p&gt;If you want to file a bug or make your own contribution to Merb,
+      feel free to register and create a ticket at our
+      &lt;a href=&quot;http://merb.lighthouseapp.com/&quot;&gt;project development page&lt;/a&gt;
+      on Lighthouse.&lt;/p&gt;
+
+    &lt;h3&gt;How do I edit this page?&lt;/h3&gt;
+    &lt;p&gt;You're seeing this page because you need to edit the following files:
+      &lt;ul&gt;
+        &lt;li&gt;config/router.rb &lt;strong&gt;&lt;em&gt;(recommended)&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
+        &lt;li&gt;app/views/exceptions/not_found.html.erb &lt;strong&gt;&lt;em&gt;(recommended)&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
+        &lt;li&gt;app/views/layout/application.html.erb &lt;strong&gt;&lt;em&gt;(change this layout)&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;
+      &lt;/ul&gt;
+    &lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;footer-container&quot;&gt;
+    &lt;hr /&gt;
+    &lt;div class=&quot;left&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;right&quot;&gt;&amp;copy; 2008 the merb dev team&lt;/div&gt;
+    &lt;p&gt;&amp;nbsp;&lt;/p&gt;
+  &lt;/div&gt;
+&lt;/div&gt;</diff>
      <filename>app/views/exceptions/not_found.html.erb</filename>
    </modified>
    <modified>
      <diff>@@ -14,8 +14,7 @@ class Autotest::MerbRspec &lt; Autotest
     super
 
     # Ignore any happenings in these directories
-    add_exception %r%^\./(?:doc|log|public|tmp)%
-
+    add_exception %r%^\./(?:doc|log|public|tmp|\.git|\.hg|\.svn|framework|gems|schema|\.DS_Store|autotest|bin|.*\.sqlite3)% 
     # Ignore SCM directories and custom Autotest mappings
     %w[.svn .hg .git .autotest].each { |exception| add_exception(exception) }
 
@@ -49,7 +48,7 @@ class Autotest::MerbRspec &lt; Autotest
     end
 
     # Any change to a helper will cause its spec to be run
-    add_mapping %r%^app/helpers/(.*)_helper(s)?\.rb% do |_, m|
+    add_mapping %r%^app/helpers/((.*)_helper(s)?)\.rb% do |_, m|
       spec_for(m[1], 'helper')
     end
 </diff>
      <filename>autotest/merb_rspec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -109,8 +109,8 @@ Merb::BootLoader.after_app_loads do
               :email =&gt; &quot;admin@example.com&quot;, 
               :password =&gt; &quot;password&quot;, :password_confirmation =&gt; &quot;password&quot;, 
               :time_zone =&gt; &quot;Europe/London&quot;,
-#              :active =&gt; true,
- #             :identity_url =&gt; File.read(Merb.root / &quot;config&quot; / &quot;open_id&quot;),
+              :active =&gt; true,
+#             :identity_url =&gt; File.read(Merb.root / &quot;config&quot; / &quot;open_id&quot;),
               :time_zone =&gt; &quot;Europe/London&quot;)
 
   Merb::Mailer.delivery_method = :sendmail</diff>
      <filename>config/init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,27 +1 @@
-var ArticleHelper = {
-
-  /**
- 	* This function will auto-resize a text area instead of showing scroll bars
-	**/
-  resizeTextArea:  function(elem) {
-    a = elem.value.split('\n');
-    b = 1;
-    
-    for (i = 0; i &lt; a.length; i++) {
-      if (a[i].length &gt;= elem.cols) {
-        b += Math.floor(a[i].length / elem.cols); 
-      }
-    }
-    
-    b += a.length;
-    
-    if (b &gt; elem.rows) {
-      elem.rows = b + 5;
-    }
-  }  
-  
-}
-
-Event.observe(window, 'load', function() {
-  Event.observe('article_content', 'keypress', function() { ArticleHelper.resizeTextArea($('article_content')) });
-});
+// Common JavaScript code across your application goes here.
\ No newline at end of file</diff>
      <filename>public/javascripts/application.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,22 @@
 #!/usr/bin/env ruby
+                                                               
+require 'rubygems'
+require 'merb-core'
 
-argv = ARGV + %w[-a fcgi]
-Merb.start(argv)
+# this is Merb.root, change this if you have some funky setup.
+merb_root = File.expand_path(File.dirname(__FILE__) / '../')
+        
+# If the fcgi process runs as apache, make sure
+# we have an inlinedir set for Rubyinline action-args to work
+unless ENV[&quot;INLINEDIR&quot;] || ENV[&quot;HOME&quot;]
+  tmpdir = merb_root / &quot;tmp&quot;
+  unless File.directory?(tmpdir)
+    Dir.mkdir(tmpdir)
+  end                
+  ENV[&quot;INLINEDIR&quot;] = tmpdir
+end
+   
+# start merb with the fcgi adapter, add options or change the log dir here
+Merb.start(:adapter =&gt; 'fcgi',
+           :merb_root =&gt; merb_root,
+           :log_file =&gt; merb_root /'log'/'merb.log')
\ No newline at end of file</diff>
      <filename>public/merb.fcgi</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b68289eb38d5420db2c8904c7a39e73c8cc531fe</id>
    </parent>
  </parents>
  <author>
    <name>damm</name>
    <email>damm@livid.dk</email>
  </author>
  <url>http://github.com/mleung/feather/commit/b6e6a7da5e9ba80b521b3768769f59120ba8c37b</url>
  <id>b6e6a7da5e9ba80b521b3768769f59120ba8c37b</id>
  <committed-date>2008-10-22T00:40:31-07:00</committed-date>
  <authored-date>2008-10-22T00:40:31-07:00</authored-date>
  <message>  - I skipped a few iles in the commit... woops.

Signed-off-by: damm &lt;damm@livid.dk&gt;</message>
  <tree>880539d3c2b6823fbe47611f3230e68bab7f57d6</tree>
  <committer>
    <name>damm</name>
    <email>damm@livid.dk</email>
  </committer>
</commit>
