diff --git a/lib/redmine/platform.rb b/lib/redmine/platform.rb index 4696fa76c..aa92d8e13 100644 --- a/lib/redmine/platform.rb +++ b/lib/redmine/platform.rb @@ -25,6 +25,10 @@ module Redmine (RUBY_PLATFORM == 'java' && /windows/i.match?(ENV['OS'] || ENV['os'])) end + def mswin64? + mswin? && RUBY_PLATFORM.include?('x86_64') + end + def osx? (/(:?darwin)/.match?(RUBY_PLATFORM)) end diff --git a/lib/redmine/thumbnail.rb b/lib/redmine/thumbnail.rb index 4bee4085a..b146a2529 100644 --- a/lib/redmine/thumbnail.rb +++ b/lib/redmine/thumbnail.rb @@ -24,7 +24,12 @@ module Redmine extend Redmine::Utils::Shell CONVERT_BIN = (Redmine::Configuration['imagemagick_convert_command'] || 'convert').freeze - GS_BIN = (Redmine::Configuration['gs_command'] || 'gs').freeze + GS_BIN = ( + Redmine::Configuration['gs_command'] || + ('gswin64c' if Redmine::Platform.mswin64?) || + ('gwwin32c' if Redmine::Platform.mswin?) || + 'gs' + ).freeze ALLOWED_TYPES = %w(image/bmp image/gif image/jpeg image/png application/pdf) # Generates a thumbnail for the source image to target @@ -73,15 +78,11 @@ module Redmine def self.gs_available? return @gs_available if defined?(@gs_available) - if Redmine::Platform.mswin? + begin + `#{shell_quote GS_BIN} -version` + @gs_available = $?.success? + rescue @gs_available = false - else - begin - `#{shell_quote GS_BIN} -version` - @gs_available = $?.success? - rescue - @gs_available = false - end end logger.warn("gs binary (#{GS_BIN}) not available") unless @gs_available @gs_available