summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/redmine/thumbnail.rb14
-rw-r--r--test/test_helper.rb5
2 files changed, 13 insertions, 6 deletions
diff --git a/lib/redmine/thumbnail.rb b/lib/redmine/thumbnail.rb
index 2fa33a13f..c2a2a2eaa 100644
--- a/lib/redmine/thumbnail.rb
+++ b/lib/redmine/thumbnail.rb
@@ -21,16 +21,18 @@ module Redmine
module Thumbnail
extend Redmine::Utils::Shell
+ CONVERT_BIN = (Redmine::Configuration['imagemagick_convert_command'] || 'convert').freeze
+
# Generates a thumbnail for the source image to target
def self.generate(source, target, size)
+ return nil unless convert_available?
unless File.exists?(target)
directory = File.dirname(target)
unless File.exists?(directory)
FileUtils.mkdir_p directory
end
- bin = Redmine::Configuration['imagemagick_convert_command'] || 'convert'
size_option = "#{size}x#{size}>"
- cmd = "#{shell_quote bin} #{shell_quote source} -thumbnail #{shell_quote size_option} #{shell_quote target}"
+ cmd = "#{shell_quote CONVERT_BIN} #{shell_quote source} -thumbnail #{shell_quote size_option} #{shell_quote target}"
unless system(cmd)
logger.error("Creating thumbnail failed (#{$?}):\nCommand: #{cmd}")
return nil
@@ -39,6 +41,14 @@ module Redmine
target
end
+ def self.convert_available?
+ return @convert_available if defined?(@convert_available)
+ logger.warn("testing for convert...")
+ @convert_available = system("#{shell_quote CONVERT_BIN} -version") rescue false
+ logger.warn("Imagemagick's convert binary (#{CONVERT_BIN}) not available") unless @convert_available
+ @convert_available
+ end
+
def self.logger
Rails.logger
end
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 6f5ab98a4..c4c956953 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -129,10 +129,7 @@ class ActiveSupport::TestCase
end
def self.convert_installed?
- bin = Redmine::Configuration['imagemagick_convert_command'] || 'convert'
- system("#{bin} -version")
- rescue
- false
+ Redmine::Thumbnail.convert_available?
end
# Returns the path to the test +vendor+ repository