Как мне быстро сделать что-то в Rmagick, чтобы проверить, что это работает?
Вопрос
Мне нужно иметь возможность быстро конвертировать образ (внутри контроллера рельсов), чтобы хостинговая компания, использующая управление нашим приложением, могла в любое время быстро протестировать его, чтобы убедиться, что rmagick не только успешно установлен, но и может быть вызван через рельсы. какой самый быстрый чистый код я могу использовать для этого?
Решение 2
Я хотел сделать это так, чтобы я мог легко использовать его с помощью веб-браузера, поскольку я развертываю на управляемых серверах, к которым у меня нет доступа к оболочке (для повышения безопасности).
Вот что я сделал
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 #------
а затем в rmagick.html.erb
<%= image_tag @path %>
Теперь я могу нажать на контроллер, и если я увижу изображение, я знаю, что rmagic установлен.
Другие советы
require 'RMagick'
image = Magick::Image.new(110, 30){ self.background_color = 'white' }
image.write('/tmp/test.jpg')
Я бы зашел на сервер и опробовал ваш код в скрипте/консоли.Это по-прежнему будет проходить через стек рельсов, но позволит вам быстро проверить, что ваш код работает так, как вы ожидаете, и что RMagick и ImageMagick правильно установлены, без необходимости ничего развертывать.
Когда придет время писать реальный код, я бы предложил поместить код преобразования изображений внутри модели, чтобы вы могли вызывать его вне контекста контроллера.
Используйте скрипт/консоль и вызовите код в модели или контроллере, который делает что-то вроде следующего:
require 'RMagick'
include Magick
img = ImageList.new('myfile.jpg')
img.crop(0,0,10,10) # or whatever
img.write('mycroppedfile.jpg')