summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-09-30 18:59:51 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-09-30 18:59:51 +0000
commite045215db7e38b0318b06aa62892e7241aa5095a (patch)
tree3b5c48a990f750d7732636059b4a6baaa559642f
parent785569b980c0bf38e47a5514ede9f750e79ee131 (diff)
downloadredmine-e045215db7e38b0318b06aa62892e7241aa5095a.tar.gz
redmine-e045215db7e38b0318b06aa62892e7241aa5095a.zip
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
-rw-r--r--app/models/attachment.rb2
-rw-r--r--config/application.rb3
-rw-r--r--test/unit/attachment_test.rb4
3 files changed, 8 insertions, 1 deletions
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