From b455ac2a27aefccdf10c9f3a1727e1edb8b41ae1 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Thu, 16 Feb 2012 21:18:01 +0000 Subject: [PATCH] Adds a rake test that removes old unattached uploads (#10253). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8893 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/attachment.rb | 2 +- lib/tasks/redmine.rake | 26 ++++++++++++++++++++++++++ test/unit/attachment_test.rb | 10 ++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 lib/tasks/redmine.rake diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 7fb9ed379..d87a9df4c 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -192,7 +192,7 @@ class Attachment < ActiveRecord::Base end def self.prune(age=1.day) - attachments = Attachment.all(:conditions => ["created_on < ? AND (container_type IS NULL OR container_type = ''", Time.now - age]) + attachments = Attachment.all(:conditions => ["created_on < ? AND (container_type IS NULL OR container_type = '')", Time.now - age]) attachments.each(&:destroy) end diff --git a/lib/tasks/redmine.rake b/lib/tasks/redmine.rake new file mode 100644 index 000000000..0b61cd691 --- /dev/null +++ b/lib/tasks/redmine.rake @@ -0,0 +1,26 @@ +# Redmine - project management software +# Copyright (C) 2006-2012 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +desc 'Removes uploaded files left unattached after one day.' + +namespace :redmine do + namespace :attachments do + task :prune => :environment do + Attachment.prune + end + end +end diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb index fb68ab655..ecee774a6 100644 --- a/test/unit/attachment_test.rb +++ b/test/unit/attachment_test.rb @@ -144,6 +144,16 @@ class AttachmentTest < ActiveSupport::TestCase assert_equal 'cbb5b0f30978ba03731d61f9f6d10011', Attachment.disk_filename("test_accentué.ça")[13..-1] end + def test_prune_should_destroy_old_unattached_attachments + Attachment.create!(:file => uploaded_test_file("testfile.txt", ""), :author_id => 1, :created_on => 2.days.ago) + Attachment.create!(:file => uploaded_test_file("testfile.txt", ""), :author_id => 1, :created_on => 2.days.ago) + Attachment.create!(:file => uploaded_test_file("testfile.txt", ""), :author_id => 1) + + assert_difference 'Attachment.count', -2 do + Attachment.prune + end + end + context "Attachmnet.attach_files" do should "attach the file" do issue = Issue.first