From e045215db7e38b0318b06aa62892e7241aa5095a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Wed, 30 Sep 2015 18:59:51 +0000 Subject: [PATCH] Remove attachment after transaction commit (#20388). Patch by Ivan Zabrovskiy. git-svn-id: http://svn.redmine.org/redmine/trunk@14630 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/attachment.rb | 2 +- config/application.rb | 3 +++ test/unit/attachment_test.rb | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/app/models/attachment.rb b/app/models/attachment.rb index d1d7c6dd0..5fa89ee5a 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -53,7 +53,7 @@ class Attachment < ActiveRecord::Base @@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails") before_create :files_to_final_location - after_destroy :delete_from_disk + after_commit :delete_from_disk, :on => :destroy # Returns an unsaved copy of the attachment def copy(attributes=nil) diff --git a/config/application.rb b/config/application.rb index 0f75247c1..90b1adf9a 100644 --- a/config/application.rb +++ b/config/application.rb @@ -47,6 +47,9 @@ module RedmineApp # Do not include all helpers config.action_controller.include_all_helpers = false + # Do not supress errors in after_rollback and after_commit callbacks + config.active_record.raise_in_transactional_callbacks = true + # XML parameter parser removed from core in Rails 4.0 # and extracted to actionpack-xml_parser gem config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::XmlParamsParser diff --git a/test/unit/attachment_test.rb b/test/unit/attachment_test.rb index 4c3a13151..ac09f5658 100644 --- a/test/unit/attachment_test.rb +++ b/test/unit/attachment_test.rb @@ -23,6 +23,10 @@ class AttachmentTest < ActiveSupport::TestCase fixtures :users, :projects, :roles, :members, :member_roles, :enabled_modules, :issues, :trackers, :attachments + # TODO: remove this with Rails 5 that supports after_commit callbacks + # in transactional fixtures (https://github.com/rails/rails/pull/18458) + self.use_transactional_fixtures = false + class MockFile attr_reader :original_filename, :content_type, :content, :size -- 2.39.5