From fe95692f10c98ee6ff4a2fcdd405d8474fc9bf5e Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Mon, 16 Jul 2012 17:37:24 +0000 Subject: [PATCH] Test if convert binary is available. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10014 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/thumbnail.rb | 14 ++++++++++++-- test/test_helper.rb | 5 +---- 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