diff --git a/app/assets/javascripts/feeds.js.coffee b/app/assets/javascripts/feeds.js.coffee index 9e59633..02dcf3c 100644 --- a/app/assets/javascripts/feeds.js.coffee +++ b/app/assets/javascripts/feeds.js.coffee @@ -13,3 +13,8 @@ $(document).ready -> false ) + $(".delete_feed").on("ajax:success", (event, data) -> + $(this).parent().remove() + false + ) + diff --git a/app/controllers/feeds_controller.rb b/app/controllers/feeds_controller.rb index 558cb9f..190af3d 100644 --- a/app/controllers/feeds_controller.rb +++ b/app/controllers/feeds_controller.rb @@ -15,6 +15,16 @@ class FeedsController < ApplicationController redirect_to :action => :index, :notice => "Add the feed" end + def destroy + Feed.find(params[:id]).destroy + render :nothing => true, :status => :ok + end + + def errors + @errors = Feed.find(params[:id]).errors + render :layout => false + end + def import fh = File.open(Rails.root.join("public", "uploads", params[:importer][:import_file].original_filename)) # TODO: Hier gehts weiter diff --git a/app/models/error.rb b/app/models/error.rb new file mode 100644 index 0000000..31b3985 --- /dev/null +++ b/app/models/error.rb @@ -0,0 +1,3 @@ +class Error < ActiveRecord::Base + belongs_to :feed +end diff --git a/app/models/feed.rb b/app/models/feed.rb index 213a0a2..eead359 100644 --- a/app/models/feed.rb +++ b/app/models/feed.rb @@ -1,7 +1,8 @@ require "pp" class Feed < ActiveRecord::Base - has_many :items + has_many :items, :dependent => :destroy + has_many :errors, :dependent => :destroy validates_uniqueness_of :url @@ -20,11 +21,19 @@ class Feed < ActiveRecord::Base end by_url(url).update_attribute(:has_errors, false) rescue Exception => e - pp e + Error.create!(:feed_id => self.id, :action => :fetch_and_parse, + :message => e) end end, :on_failure => lambda do |url, response_code, response_header, response_body| by_url(url).update_attribute(:has_errors, true) + Error.create!(:feed_id => self.id, :action => :fetch_and_parse, + :message => " + url: #{url} + response-code: #{response_code} + response-header: #{response_header} + response-body: #{response_body} + ") end ) end @@ -36,7 +45,15 @@ class Feed < ActiveRecord::Base end, :on_failure => lambda do |url, response_code, response_header, response_body| if params.first.include?(:force) - Feed.create!(:url => url, :has_errors => true) + feed = Feed.create!(:url => url, :has_errors => true) + + Error.create!(:feed_id => feed.id, :action => :import, + :message => " + url: #{url} + response-code: #{response_code} + response-header: #{response_header} + response-body: #{response_body} + ") end end ) diff --git a/app/views/feeds/_navigation.html.erb b/app/views/feeds/_navigation.html.erb index f957b51..55bfa8a 100644 --- a/app/views/feeds/_navigation.html.erb +++ b/app/views/feeds/_navigation.html.erb @@ -1,5 +1,9 @@ \ No newline at end of file + diff --git a/app/views/feeds/errors.html.erb b/app/views/feeds/errors.html.erb new file mode 100644 index 0000000..34e67c0 --- /dev/null +++ b/app/views/feeds/errors.html.erb @@ -0,0 +1,6 @@ +<% @errors.each do |error| %> +
+ <%= error.type %> +
<%= error.message %>
+
+<% end %> diff --git a/config/routes.rb b/config/routes.rb index 699cdde..7565d49 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -14,7 +14,10 @@ FeedFu::Application.routes.draw do # resources :products resources :feeds do collection do - get "import" + get :import + end + member do + get :errors end end diff --git a/db/migrate/20130110200633_create_errors.rb b/db/migrate/20130110200633_create_errors.rb new file mode 100644 index 0000000..ad688ab --- /dev/null +++ b/db/migrate/20130110200633_create_errors.rb @@ -0,0 +1,11 @@ +class CreateErrors < ActiveRecord::Migration + def change + create_table :errors do |t| + t.references :feed + t.string :action, :default => :undefined + t.text :message, :default => "no message" + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index a316a28..5cce6d1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,15 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120407180851) do +ActiveRecord::Schema.define(:version => 20130110200633) do + + create_table "errors", :force => true do |t| + t.integer "feed_id" + t.string "action", :default => "undefined" + t.text "message", :default => "no message" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end create_table "feeds", :force => true do |t| t.string "url" diff --git a/spec/models/errors_spec.rb b/spec/models/errors_spec.rb new file mode 100644 index 0000000..e5bafad --- /dev/null +++ b/spec/models/errors_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe Errors do + pending "add some examples to (or delete) #{__FILE__}" +end