Added routes and forms. No update action as yet.
authorNeil Smith <neil.git@njae.me.uk>
Fri, 17 Jul 2009 14:11:29 +0000 (14:11 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 17 Jul 2009 14:11:29 +0000 (14:11 +0000)
app/controllers/feed_controller.rb
app/models/feed_item.rb
app/views/feed/index.html.erb
app/views/feed/show.html.erb
config/routes.rb
log/development.log
public/index.html [deleted file]

index f1597c061fb6cf55622fba983ee5cbb99840905e..7fa4e283185e163323ea5d4dbea1944cbd84ae28 100644 (file)
@@ -4,7 +4,7 @@ class FeedController < ApplicationController
   end
 
   def show
-    @feed_items = FeedItem.find_all_by_feed_name(params[:id])
+    @feed_items = FeedItem.find_all_by_feed_name(params[:feed_name])
   end
 
   def update
index d875a8aa3bac6531e0c9d42dcfee0c2c1e44ff0c..ce5b8c6c05e674dd46de604e79797cfdad41d305 100644 (file)
@@ -1,2 +1,21 @@
 class FeedItem < ActiveRecord::Base
+
+  require 'cgi' # needed for url decoding
+
+  validates_presence_of :feed_name, :title, :description
+  validate :feed_name_must_be_legal
+
+protected
+
+  def feed_name_must_be_legal
+    if url_encode(feed_name) != feed_name or
+        CGI::unescape(feed_name) != feed_name or
+        feed_name == 'index' or
+        feed_name == 'show' or
+        feed_name == 'update' or
+        feed_name == 'action'
+      errors.add(:feed_name, 'is an invalid feed name')
+    end
+  end
+
 end
index cdac0ac43ac471b96e8bee5b7de1ec334eb9eb2b..cd75a00c946dbc8a9cf259c6d1f765036b47a254 100644 (file)
@@ -1,6 +1,14 @@
 <h1>Feeds available</h1>
+
+<% form_for :feed_item, :url => update_url do |form| %>
+  <p>Set feed <%= form.text_field :feed_name, :size => 20 %>
+    to include <%= form.text_field :title, :size => 30 %>
+    containing  <%= form.text_field :description, :size => 50 %>
+    <%= submit_tag %></p>
+<% end %>
+
 <ul>
 <% for feed in @feeds %>
-  <li><%= h feed.feed_name %></li>
+  <li><%= link_to(h(feed.feed_name), (feed_url(:feed_name => feed.feed_name))) %></li>
 <% end %>
 </ul>
\ No newline at end of file
index 374ee872403ce14a7e8dee5dd9d8cf3f62e67839..9c5180a91a41989e8db6d94ce346b5ba10ebb8d9 100644 (file)
@@ -1,4 +1,13 @@
-<h1>Contents of feed <%= params[:id] %></h1>
+<h1>Contents of feed <%= h params[:feed_name] %></h1>
+<p><%= link_to("List of all feeds", index_url) %></p>
+
+<% form_for :feed_item, :url => update_url(params[:feed_name]) do |form| %>
+  <p>Set feed <%= form.text_field :feed_name, :size => 20, :value => h(params[:feed_name]) %>
+    to include <%= form.text_field :title, :size => 30 %>
+    containing  <%= form.text_field :description, :size => 50 %>
+    <%= submit_tag %></p>
+<% end %>
+
 <dl>
   <% for item in @feed_items %>
     <dt><%= h item.title %></dt>
index 4f3d9d22ddab9b76d7578df13b4c4f4ae5d91bdf..7754dd1c3cfa886b5ed17c33e10ac332d87816e2 100644 (file)
@@ -30,14 +30,28 @@ ActionController::Routing::Routes.draw do |map|
   #     admin.resources :products
   #   end
 
+  map.index 'index.:format',
+    :conditions => { :method => :get },
+    :controller => 'feed',
+    :action => 'index'
+  map.feed ':feed_name.:format',
+    :conditions => { :method => :get },
+    :controller => 'feed',
+    :action => 'show'
+  map.update ':feed_name',
+    :conditions => { :method => :post },
+    :defaults => { :feed_name => nil },
+    :controller => 'feed',
+    :action => 'update'
+
   # You can have the root of your site routed with map.root -- just remember to delete public/index.html.
-  # map.root :controller => "welcome"
+  map.root :controller => "feed"
 
   # See how all your routes lay out with "rake routes"
 
   # Install the default routes as the lowest priority.
   # Note: These default routes make all actions in every controller accessible via GET requests. You should
   # consider removing the them or commenting them out if you're using named routes and resources.
-  map.connect ':controller/:action/:id'
-  map.connect ':controller/:action/:id.:format'
+#  map.connect ':controller/:action/:id'
+#  map.connect ':controller/:action/:id.:format'
 end
index a56b10313f5b5528f9a9e0819fa06c9e63c372fc..a6111ee123d2f6ce25460bd5d4d7335f4963492e 100644 (file)
@@ -808,3 +808,854 @@ Processing FeedController#show (for 127.0.0.1 at 2009-07-17 11:57:08) [GET]
   \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
 Rendering feed/show
 Completed in 22ms (View: 9, DB: 1) | 200 OK [http://localhost/feed/show/feed-a]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:32:03) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.1ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 20ms (View: 4, DB: 2) | 200 OK [http://localhost/]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:32:06) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.0ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 19ms (View: 4, DB: 1) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:32:10) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.0ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.1ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` IS NULL) \e[0m
+Rendering feed/show
+Completed in 17ms (View: 1, DB: 1) | 200 OK [http://localhost/feed-a]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:33:02) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.1ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
+Rendering feed/show
+Completed in 26ms (View: 9, DB: 1) | 200 OK [http://localhost/feed-a]
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.3ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing ApplicationController#index (for 127.0.0.1 at 2009-07-17 14:35:19) [GET]
+
+ActionController::RoutingError (No route matches "/feed/show/feed-a" with {:method=>:get}):
+  /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+  /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+  /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+  /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+  /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+  /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+  /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+  /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendering rescues/layout (not_found)
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:40:06) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.0ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
+Rendering feed/show
+ERROR: compiling _run_erb_app47views47feed47show46html46erb RAISED compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:2: syntax error, unexpected ';', expecting ')'
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+                                                                                                    ^
+Function body:           def _run_erb_app47views47feed47show46html46erb(local_assigns)
+            old_output_buffer = output_buffer;;@output_buffer = '';  __in_erb_template=true ; @output_buffer.concat "<h1>Contents of feed "; @output_buffer.concat(( params[:feed_name] ).to_s); @output_buffer.concat "</h1>\n"
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+@output_buffer.concat "<dl>\n"
+@output_buffer.concat "  ";  for item in @feed_items ; @output_buffer.concat "\n"
+@output_buffer.concat "    <dt>"; @output_buffer.concat(( h item.title ).to_s); @output_buffer.concat "</dt>\n"
+@output_buffer.concat "    <dd><em>"; @output_buffer.concat(( h item.description ).to_s); @output_buffer.concat "</em></dd>\n"
+@output_buffer.concat "  ";  end ; @output_buffer.concat "\n"
+@output_buffer.concat "</dl>\n"
+@output_buffer
+          ensure
+            self.output_buffer = old_output_buffer
+          end
+Backtrace: /home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:12:in `compile!'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:61:in `compile'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:28:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/template.rb:194:in `render_template'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/base.rb:260:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1241:in `render_for_file'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:937:in `render_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1317:in `default_render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1323:in `perform_action_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:617:in `call_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/flash.rb:141:in `perform_action'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `send'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `process_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:606:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:391:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:386:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:433:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:88:in `dispatch'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:111:in `_call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:82:in `initialize'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:9:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:28:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/head.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb:24:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/params_parser.rb:15:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rewindable_input.rb:25:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:93:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `synchronize'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:46:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `each'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/content_length.rb:13:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:46:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:13:in `run'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
+script/server:3
+
+ActionView::TemplateError (compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:2: syntax error, unexpected ';', expecting ')'
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+                                                                                                    ^) on line #2 of app/views/feed/show.html.erb:
+1: <h1>Contents of feed <%= params[:feed_name] %></h1>
+2: <p><%= link_to("List of all feeds", index_url %></p>
+3: <dl>
+4:   <% for item in @feed_items %>
+5:     <dt><%= h item.title %></dt>
+
+    app/views/feed/show.html.erb:12:in `compile!'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (95.8ms)
+Rendered rescues/_request_and_response (1.0ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:40:50) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.0ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
+Rendering feed/show
+ERROR: compiling _run_erb_app47views47feed47show46html46erb RAISED compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:2: syntax error, unexpected ';', expecting ')'
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+                                                                                                    ^
+Function body:           def _run_erb_app47views47feed47show46html46erb(local_assigns)
+            old_output_buffer = output_buffer;;@output_buffer = '';  __in_erb_template=true ; @output_buffer.concat "<h1>Contents of feed "; @output_buffer.concat(( params[:feed_name] ).to_s); @output_buffer.concat "</h1>\n"
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+@output_buffer.concat "<dl>\n"
+@output_buffer.concat "  ";  for item in @feed_items ; @output_buffer.concat "\n"
+@output_buffer.concat "    <dt>"; @output_buffer.concat(( h item.title ).to_s); @output_buffer.concat "</dt>\n"
+@output_buffer.concat "    <dd><em>"; @output_buffer.concat(( h item.description ).to_s); @output_buffer.concat "</em></dd>\n"
+@output_buffer.concat "  ";  end ; @output_buffer.concat "\n"
+@output_buffer.concat "</dl>\n"
+@output_buffer
+          ensure
+            self.output_buffer = old_output_buffer
+          end
+Backtrace: /home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:12:in `compile!'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:61:in `compile'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:28:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/template.rb:194:in `render_template'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/base.rb:260:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1241:in `render_for_file'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:937:in `render_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1317:in `default_render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1323:in `perform_action_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:617:in `call_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/flash.rb:141:in `perform_action'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `send'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `process_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:606:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:391:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:386:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:433:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:88:in `dispatch'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:111:in `_call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:82:in `initialize'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:9:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:28:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/head.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb:24:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/params_parser.rb:15:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rewindable_input.rb:25:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:93:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `synchronize'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:46:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `each'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/content_length.rb:13:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:46:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:13:in `run'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
+script/server:3
+
+ActionView::TemplateError (compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:2: syntax error, unexpected ';', expecting ')'
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+                                                                                                    ^) on line #2 of app/views/feed/show.html.erb:
+1: <h1>Contents of feed <%= params[:feed_name] %></h1>
+2: <p><%= link_to("List of all feeds", index_url %></p>
+3: <dl>
+4:   <% for item in @feed_items %>
+5:     <dt><%= h item.title %></dt>
+
+    app/views/feed/show.html.erb:12:in `compile!'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (164.7ms)
+Rendered rescues/_request_and_response (0.8ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;36;1mSQL (0.8ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:40:54) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.1ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 31ms (View: 13, DB: 2) | 200 OK [http://localhost/]
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:40:56) [GET]
+  Parameters: {"feed_name"=>"feed-b"}
+  \e[4;36;1mFeedItem Columns (1.9ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-b') \e[0m
+Rendering feed/show
+ERROR: compiling _run_erb_app47views47feed47show46html46erb RAISED compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:2: syntax error, unexpected ';', expecting ')'
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+                                                                                                    ^
+Function body:           def _run_erb_app47views47feed47show46html46erb(local_assigns)
+            old_output_buffer = output_buffer;;@output_buffer = '';  __in_erb_template=true ; @output_buffer.concat "<h1>Contents of feed "; @output_buffer.concat(( params[:feed_name] ).to_s); @output_buffer.concat "</h1>\n"
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+@output_buffer.concat "<dl>\n"
+@output_buffer.concat "  ";  for item in @feed_items ; @output_buffer.concat "\n"
+@output_buffer.concat "    <dt>"; @output_buffer.concat(( h item.title ).to_s); @output_buffer.concat "</dt>\n"
+@output_buffer.concat "    <dd><em>"; @output_buffer.concat(( h item.description ).to_s); @output_buffer.concat "</em></dd>\n"
+@output_buffer.concat "  ";  end ; @output_buffer.concat "\n"
+@output_buffer.concat "</dl>\n"
+@output_buffer
+          ensure
+            self.output_buffer = old_output_buffer
+          end
+Backtrace: /home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:12:in `compile!'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:61:in `compile'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:28:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/template.rb:194:in `render_template'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/base.rb:260:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1241:in `render_for_file'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:937:in `render_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1317:in `default_render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1323:in `perform_action_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:617:in `call_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/flash.rb:141:in `perform_action'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `send'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `process_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:606:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:391:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:386:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:433:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:88:in `dispatch'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:111:in `_call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:82:in `initialize'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:9:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:28:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/head.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb:24:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/params_parser.rb:15:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rewindable_input.rb:25:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:93:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `synchronize'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:46:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `each'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/content_length.rb:13:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:46:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:13:in `run'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
+script/server:3
+
+ActionView::TemplateError (compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/show.html.erb:2: syntax error, unexpected ';', expecting ')'
+@output_buffer.concat "<p>"; @output_buffer.concat(( link_to("List of all feeds", index_url ).to_s); @output_buffer.concat "</p>\n"
+                                                                                                    ^) on line #2 of app/views/feed/show.html.erb:
+1: <h1>Contents of feed <%= params[:feed_name] %></h1>
+2: <p><%= link_to("List of all feeds", index_url %></p>
+3: <dl>
+4:   <% for item in @feed_items %>
+5:     <dt><%= h item.title %></dt>
+
+    app/views/feed/show.html.erb:12:in `compile!'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (94.1ms)
+Rendered rescues/_request_and_response (0.6ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:42:01) [GET]
+  Parameters: {"feed_name"=>"feed-b"}
+  \e[4;36;1mFeedItem Columns (1.1ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-b') \e[0m
+Rendering feed/show
+Completed in 26ms (View: 9, DB: 1) | 200 OK [http://localhost/feed-b]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:42:03) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.3ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 26ms (View: 9, DB: 2) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:42:04) [GET]
+  Parameters: {"feed_name"=>"feed-f"}
+  \e[4;36;1mFeedItem Columns (2.5ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (1.4ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-f') \e[0m
+Rendering feed/show
+Completed in 45ms (View: 7, DB: 4) | 200 OK [http://localhost/feed-f]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:42:06) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.0ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 22ms (View: 8, DB: 1) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:42:07) [GET]
+  Parameters: {"feed_name"=>"feed-j"}
+  \e[4;36;1mFeedItem Columns (1.8ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (1.1ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-j') \e[0m
+Rendering feed/show
+Completed in 32ms (View: 6, DB: 3) | 200 OK [http://localhost/feed-j]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:42:10) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.4ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 23ms (View: 8, DB: 2) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:42:11) [GET]
+  Parameters: {"feed_name"=>"feed-d"}
+  \e[4;36;1mFeedItem Columns (1.0ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.8ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-d') \e[0m
+Rendering feed/show
+Completed in 22ms (View: 4, DB: 2) | 200 OK [http://localhost/feed-d]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:42:13) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.0ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 23ms (View: 8, DB: 1) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:43:30) [GET]
+  Parameters: {"feed_name"=>"feed-b"}
+  \e[4;36;1mFeedItem Columns (1.1ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-b') \e[0m
+Rendering feed/show
+Completed in 20ms (View: 4, DB: 1) | 200 OK [http://localhost/feed-b]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:51:36) [GET]
+  Parameters: {"feed_name"=>"feed-b"}
+  \e[4;36;1mFeedItem Columns (1.1ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-b') \e[0m
+Rendering feed/show
+Completed in 31ms (View: 13, DB: 1) | 200 OK [http://localhost/feed-b]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:55:57) [GET]
+  Parameters: {"feed_name"=>"feed-b"}
+  \e[4;36;1mFeedItem Columns (1.9ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.3ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-b') \e[0m
+Rendering feed/show
+Completed in 37ms (View: 12, DB: 3) | 200 OK [http://localhost/feed-b]
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:55:59) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.0ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 25ms (View: 9, DB: 1) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.5ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:56:02) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.7ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
+Rendering feed/show
+Completed in 24ms (View: 6, DB: 3) | 200 OK [http://localhost/feed-a]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:56:03) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.0ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 25ms (View: 9, DB: 2) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.3ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:56:05) [GET]
+  Parameters: {"feed_name"=>"feed-h"}
+  \e[4;36;1mFeedItem Columns (1.2ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.8ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-h') \e[0m
+Rendering feed/show
+Completed in 26ms (View: 7, DB: 2) | 200 OK [http://localhost/feed-h]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:56:36) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+
+ActionView::TemplateError (update_url failed to generate from {:action=>"update", :controller=>"feed"} - you may have ambiguous routes, or you may need to supply additional parameters for this route.  content_url has the following required parameters: [:feed_name] - are they all satisfied?) on line #3 of app/views/feed/index.html.erb:
+1: <h1>Feeds available</h1>
+2: 
+3: <% form_for :feed_item, :url => update_url do |form| %>
+4:   <p>Set feed <%= form.text_field :feed_name, :size => 20, :value => h(params[:feed_name]) %>
+5:     to include <%= form.text_field :title, :size => 30 %>
+6:     containing  <%= form.text_field :description, :size => 50 %>
+
+    (eval):20:in `update_url'
+    app/views/feed/index.html.erb:3
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (117.1ms)
+Rendered rescues/_request_and_response (0.6ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET NAMES 'utf8'\e[0m
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:57:06) [GET]
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+ERROR: compiling _run_erb_app47views47feed47index46html46erb RAISED compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/index.html.erb:4: syntax error, unexpected ')', expecting kEND
+@output_buffer.concat "  <p>Set feed "; @output_buffer.concat(( form.text_field :feed_name, :size => 20) ).to_s); @output_buffer.concat "\n"
+                                                                                                                ^
+Function body:           def _run_erb_app47views47feed47index46html46erb(local_assigns)
+            old_output_buffer = output_buffer;;@output_buffer = '';  __in_erb_template=true ; @output_buffer.concat "<h1>Feeds available</h1>\n"
+@output_buffer.concat "\n"
+ form_for :feed_item, :url => update_url do |form| ; @output_buffer.concat "\n"
+@output_buffer.concat "  <p>Set feed "; @output_buffer.concat(( form.text_field :feed_name, :size => 20) ).to_s); @output_buffer.concat "\n"
+@output_buffer.concat "    to include "; @output_buffer.concat(( form.text_field :title, :size => 30 ).to_s); @output_buffer.concat "\n"
+@output_buffer.concat "    containing  "; @output_buffer.concat(( form.text_field :description, :size => 50 ).to_s); @output_buffer.concat "\n"
+@output_buffer.concat "    ";  submit_tag ; @output_buffer.concat "</p>\n"
+ end ; @output_buffer.concat "\n"
+@output_buffer.concat "\n"
+@output_buffer.concat "<ul>\n"
+ for feed in @feeds ; @output_buffer.concat "\n"
+@output_buffer.concat "  <li>"; @output_buffer.concat(( link_to(h(feed.feed_name), (feed_url(:feed_name => feed.feed_name))) ).to_s); @output_buffer.concat "</li>\n"
+ end ; @output_buffer.concat "\n"
+@output_buffer.concat "</ul>"; @output_buffer
+          ensure
+            self.output_buffer = old_output_buffer
+          end
+Backtrace: /home/neil/programming/rails/feedcatcher/app/views/feed/index.html.erb:17:in `compile!'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:61:in `compile'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/renderable.rb:28:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/template.rb:194:in `render_template'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_view/base.rb:260:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1241:in `render_for_file'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:937:in `render_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:51:in `render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1317:in `default_render'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:1323:in `perform_action_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:617:in `call_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:10:in `realtime'
+/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/benchmark.rb:17:in `ms'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/flash.rb:141:in `perform_action'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `send'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:523:in `process_without_filters'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/filters.rb:606:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:391:in `process'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/base.rb:386:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/routing/route_set.rb:433:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:88:in `dispatch'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:111:in `_call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:82:in `initialize'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:29:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:9:in `cache'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/query_cache.rb:28:in `call'
+/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/head.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb:24:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/params_parser.rb:15:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/rewindable_input.rb:25:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/session/cookie_store.rb:93:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/reloader.rb:9:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/failsafe.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `synchronize'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/lock.rb:11:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/dispatcher.rb:106:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/static.rb:31:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:46:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `each'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb:40:in `call'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/rails/rack/log_tailer.rb:17:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/content_length.rb:13:in `call'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:46:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb:13:in `run'
+/usr/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/commands/server.rb:111
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
+/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
+script/server:3
+
+ActionView::TemplateError (compile error
+/home/neil/programming/rails/feedcatcher/app/views/feed/index.html.erb:4: syntax error, unexpected ')', expecting kEND
+@output_buffer.concat "  <p>Set feed "; @output_buffer.concat(( form.text_field :feed_name, :size => 20) ).to_s); @output_buffer.concat "\n"
+                                                                                                                ^) on line #4 of app/views/feed/index.html.erb:
+1: <h1>Feeds available</h1>
+2: 
+3: <% form_for :feed_item, :url => update_url do |form| %>
+4:   <p>Set feed <%= form.text_field :feed_name, :size => 20) %>
+5:     to include <%= form.text_field :title, :size => 30 %>
+6:     containing  <%= form.text_field :description, :size => 50 %>
+7:     <% submit_tag %></p>
+
+    app/views/feed/index.html.erb:17:in `compile!'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (189.7ms)
+Rendered rescues/_request_and_response (1.0ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (1.0ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:57:32) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+
+ActionView::TemplateError (update_url failed to generate from {:action=>"update", :controller=>"feed"} - you may have ambiguous routes, or you may need to supply additional parameters for this route.  content_url has the following required parameters: [:feed_name] - are they all satisfied?) on line #3 of app/views/feed/index.html.erb:
+1: <h1>Feeds available</h1>
+2: 
+3: <% form_for :feed_item, :url => update_url do |form| %>
+4:   <p>Set feed <%= form.text_field :feed_name, :size => 20 %>
+5:     to include <%= form.text_field :title, :size => 30 %>
+6:     containing  <%= form.text_field :description, :size => 50 %>
+
+    (eval):20:in `update_url'
+    app/views/feed/index.html.erb:3
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (111.7ms)
+Rendered rescues/_request_and_response (0.6ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET NAMES 'utf8'\e[0m
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 14:58:15) [GET]
+  Parameters: {"feed_name"=>"feed-h"}
+  \e[4;35;1mFeedItem Columns (1.3ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-h') \e[0m
+Rendering feed/show
+Completed in 30ms (View: 12, DB: 2) | 200 OK [http://localhost/feed-h]
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET NAMES 'utf8'\e[0m
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 14:58:19) [GET]
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+
+ActionView::TemplateError (update_url failed to generate from {:action=>"update", :controller=>"feed"} - you may have ambiguous routes, or you may need to supply additional parameters for this route.  content_url has the following required parameters: [:feed_name] - are they all satisfied?) on line #3 of app/views/feed/index.html.erb:
+1: <h1>Feeds available</h1>
+2: 
+3: <% form_for :feed_item, :url => update_url do |form| %>
+4:   <p>Set feed <%= form.text_field :feed_name, :size => 20 %>
+5:     to include <%= form.text_field :title, :size => 30 %>
+6:     containing  <%= form.text_field :description, :size => 50 %>
+
+    (eval):20:in `update_url'
+    app/views/feed/index.html.erb:3
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
+    /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
+    /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
+    /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
+    /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
+    /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
+
+Rendered rescues/_trace (113.9ms)
+Rendered rescues/_request_and_response (0.5ms)
+Rendering rescues/layout (internal_server_error)
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 15:02:49) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (1.7ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 38ms (View: 16, DB: 2) | 200 OK [http://localhost/index]
+  \e[4;36;1mSQL (0.2ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 15:03:07) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.0ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.3ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
+Rendering feed/show
+Completed in 115ms (View: 96, DB: 2) | 200 OK [http://localhost/feed-a]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.2ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#show (for 127.0.0.1 at 2009-07-17 15:03:43) [GET]
+  Parameters: {"feed_name"=>"feed-a"}
+  \e[4;36;1mFeedItem Columns (1.1ms)\e[0m   \e[0;1mSHOW FIELDS FROM `feed_items`\e[0m
+  \e[4;35;1mFeedItem Load (0.2ms)\e[0m   \e[0mSELECT * FROM `feed_items` WHERE (`feed_items`.`feed_name` = 'feed-a') \e[0m
+Rendering feed/show
+Completed in 32ms (View: 13, DB: 2) | 200 OK [http://localhost/feed-a]
+  \e[4;36;1mSQL (0.1ms)\e[0m   \e[0;1mSET NAMES 'utf8'\e[0m
+  \e[4;35;1mSQL (0.1ms)\e[0m   \e[0mSET SQL_AUTO_IS_NULL=0\e[0m
+
+
+Processing FeedController#index (for 127.0.0.1 at 2009-07-17 15:03:46) [GET]
+  \e[4;36;1mFeedItem Load (0.2ms)\e[0m   \e[0;1mSELECT DISTINCT feed_name FROM `feed_items` \e[0m
+Rendering feed/index
+  \e[4;35;1mFeedItem Columns (2.1ms)\e[0m   \e[0mSHOW FIELDS FROM `feed_items`\e[0m
+Completed in 33ms (View: 17, DB: 2) | 200 OK [http://localhost/index]
diff --git a/public/index.html b/public/index.html
deleted file mode 100644 (file)
index 0dd5189..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html>
-  <head>
-    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
-    <title>Ruby on Rails: Welcome aboard</title>
-    <style type="text/css" media="screen">
-      body {
-        margin: 0;
-        margin-bottom: 25px;
-        padding: 0;
-        background-color: #f0f0f0;
-        font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
-        font-size: 13px;
-        color: #333;
-      }
-      
-      h1 {
-        font-size: 28px;
-        color: #000;
-      }
-      
-      a  {color: #03c}
-      a:hover {
-        background-color: #03c;
-        color: white;
-        text-decoration: none;
-      }
-      
-      
-      #page {
-        background-color: #f0f0f0;
-        width: 750px;
-        margin: 0;
-        margin-left: auto;
-        margin-right: auto;
-      }
-      
-      #content {
-        float: left;
-        background-color: white;
-        border: 3px solid #aaa;
-        border-top: none;
-        padding: 25px;
-        width: 500px;
-      }
-      
-      #sidebar {
-        float: right;
-        width: 175px;
-      }
-
-      #footer {
-        clear: both;
-      }
-      
-
-      #header, #about, #getting-started {
-        padding-left: 75px;
-        padding-right: 30px;
-      }
-
-
-      #header {
-        background-image: url("images/rails.png");
-        background-repeat: no-repeat;
-        background-position: top left;
-        height: 64px;
-      }
-      #header h1, #header h2 {margin: 0}
-      #header h2 {
-        color: #888;
-        font-weight: normal;
-        font-size: 16px;
-      }
-      
-      
-      #about h3 {
-        margin: 0;
-        margin-bottom: 10px;
-        font-size: 14px;
-      }
-      
-      #about-content {
-        background-color: #ffd;
-        border: 1px solid #fc0;
-        margin-left: -11px;
-      }
-      #about-content table {
-        margin-top: 10px;
-        margin-bottom: 10px;
-        font-size: 11px;
-        border-collapse: collapse;
-      }
-      #about-content td {
-        padding: 10px;
-        padding-top: 3px;
-        padding-bottom: 3px;
-      }
-      #about-content td.name  {color: #555}
-      #about-content td.value {color: #000}
-      
-      #about-content.failure {
-        background-color: #fcc;
-        border: 1px solid #f00;
-      }
-      #about-content.failure p {
-        margin: 0;
-        padding: 10px;
-      }
-      
-      
-      #getting-started {
-        border-top: 1px solid #ccc;
-        margin-top: 25px;
-        padding-top: 15px;
-      }
-      #getting-started h1 {
-        margin: 0;
-        font-size: 20px;
-      }
-      #getting-started h2 {
-        margin: 0;
-        font-size: 14px;
-        font-weight: normal;
-        color: #333;
-        margin-bottom: 25px;
-      }
-      #getting-started ol {
-        margin-left: 0;
-        padding-left: 0;
-      }
-      #getting-started li {
-        font-size: 18px;
-        color: #888;
-        margin-bottom: 25px;
-      }
-      #getting-started li h2 {
-        margin: 0;
-        font-weight: normal;
-        font-size: 18px;
-        color: #333;
-      }
-      #getting-started li p {
-        color: #555;
-        font-size: 13px;
-      }
-      
-      
-      #search {
-        margin: 0;
-        padding-top: 10px;
-        padding-bottom: 10px;
-        font-size: 11px;
-      }
-      #search input {
-        font-size: 11px;
-        margin: 2px;
-      }
-      #search-text {width: 170px}
-      
-      
-      #sidebar ul {
-        margin-left: 0;
-        padding-left: 0;
-      }
-      #sidebar ul h3 {
-        margin-top: 25px;
-        font-size: 16px;
-        padding-bottom: 10px;
-        border-bottom: 1px solid #ccc;
-      }
-      #sidebar li {
-        list-style-type: none;
-      }
-      #sidebar ul.links li {
-        margin-bottom: 5px;
-      }
-      
-    </style>
-    <script type="text/javascript" src="javascripts/prototype.js"></script>
-    <script type="text/javascript" src="javascripts/effects.js"></script>
-    <script type="text/javascript">
-      function about() {
-        if (Element.empty('about-content')) {
-          new Ajax.Updater('about-content', 'rails/info/properties', {
-            method:     'get',
-            onFailure:  function() {Element.classNames('about-content').add('failure')},
-            onComplete: function() {new Effect.BlindDown('about-content', {duration: 0.25})}
-          });
-        } else {
-          new Effect[Element.visible('about-content') ? 
-            'BlindUp' : 'BlindDown']('about-content', {duration: 0.25});
-        }
-      }
-      
-      window.onload = function() {
-        $('search-text').value = '';
-        $('search').onsubmit = function() {
-          $('search-text').value = 'site:rubyonrails.org ' + $F('search-text');
-        }
-      }
-    </script>
-  </head>
-  <body>
-    <div id="page">
-      <div id="sidebar">
-        <ul id="sidebar-items">
-          <li>
-            <form id="search" action="http://www.google.com/search" method="get">
-              <input type="hidden" name="hl" value="en" />
-              <input type="text" id="search-text" name="q" value="site:rubyonrails.org " />
-              <input type="submit" value="Search" /> the Rails site
-            </form>
-          </li>
-        
-          <li>
-            <h3>Join the community</h3>
-            <ul class="links">
-              <li><a href="http://www.rubyonrails.org/">Ruby on Rails</a></li>
-              <li><a href="http://weblog.rubyonrails.org/">Official weblog</a></li>
-              <li><a href="http://wiki.rubyonrails.org/">Wiki</a></li>
-            </ul>
-          </li>
-          
-          <li>
-            <h3>Browse the documentation</h3>
-            <ul class="links">
-              <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
-              <li><a href="http://stdlib.rubyonrails.org/">Ruby standard library</a></li>
-              <li><a href="http://corelib.rubyonrails.org/">Ruby core</a></li>
-              <li><a href="http://guides.rubyonrails.org/">Rails Guides</a></li>
-            </ul>
-          </li>
-        </ul>
-      </div>
-
-      <div id="content">
-        <div id="header">
-          <h1>Welcome aboard</h1>
-          <h2>You&rsquo;re riding Ruby on Rails!</h2>
-        </div>
-
-        <div id="about">
-          <h3><a href="rails/info/properties" onclick="about(); return false">About your application&rsquo;s environment</a></h3>
-          <div id="about-content" style="display: none"></div>
-        </div>
-        
-        <div id="getting-started">
-          <h1>Getting started</h1>
-          <h2>Here&rsquo;s how to get rolling:</h2>
-          
-          <ol>          
-            <li>
-              <h2>Use <tt>script/generate</tt> to create your models and controllers</h2>
-              <p>To see all available options, run it without parameters.</p>
-            </li>
-            
-            <li>
-              <h2>Set up a default route and remove or rename this file</h2>
-              <p>Routes are set up in config/routes.rb.</p>
-            </li>
-
-            <li>
-              <h2>Create your database</h2>
-              <p>Run <tt>rake db:migrate</tt> to create your database. If you're not using SQLite (the default), edit <tt>config/database.yml</tt> with your username and password.</p>
-            </li>
-          </ol>
-        </div>
-      </div>
-      
-      <div id="footer">&nbsp;</div>
-    </div>
-  </body>
-</html>
\ No newline at end of file