Como faço para rapidamente fazer algo em Rmagick para testá-lo funcionar
Pergunta
Eu preciso ser capaz de converter rapidamente uma imagem (dentro de uma trilhos controlador) de modo que a empresa de hospedagem usando o gerenciamento de nossa aplicação pode testar rapidamente a qualquer tempo, para garantir que rmagick não é apenas instalado com êxito, mas pode ser chamado de throgh os trilhos stiack, que é a forma mais rápida código limpo que eu possa usar para fazer isso?
Solução 2
Eu queria fazer isso para que eu possa batê-lo com um navegador da web, como eu sou deployng para servidores gerenciados, que eu não tenho acesso ao shell para (para maior segurança).
Então é isso que eu fiz
class DiagnosticsController < ApplicationController
require 'RMagick'
def rmagick
images_path = "public/images"
file_name = "rmagick_generated_thumb.jpg"
file_path = images_path + "/"+ file_name
File.delete file_path if File.exists? file_path
img = Magick::Image.read("lib/sample_images/magic.jpg").first
thumb = img.scale(0.25)
@path = file_name
thumb.write file_path
end
end #------
e, em seguida, em rmagick.html.erb
<%= image_tag @path %>
Agora eu posso bater o controlador, e se eu ver uma imagem, eu sei rmagic está instalado.
Outras dicas
require 'RMagick'
image = Magick::Image.new(110, 30){ self.background_color = 'white' }
image.write('/tmp/test.jpg')
Eu gostaria de fazer logon para o servidor e experimentar o seu código no script/console.Isso ainda vai percorrer os trilhos da pilha, mas irá permitir que você rapidamente verificar se o código funciona da forma esperada e que RMagick e ImageMagick estão instalados corretamente sem ter que implementar alguma coisa.
Quando chega a hora de escrever o seu código real, eu sugiro colocar a imagem de conversão de código dentro de um modelo, então você pode chamá-lo fora do contexto de um controlador.
Usar o script/console, e chamar o código em um modelo ou um controlador que faz algo parecido com o seguinte:
require 'RMagick'
include Magick
img = ImageList.new('myfile.jpg')
img.crop(0,0,10,10) # or whatever
img.write('mycroppedfile.jpg')