2016-02-18 4 views
3

Я загружаю изображение в рубин на сервере rails, используя драгоценный камень под названием paperclip. Изображение загружается правильно и работает. Я работаю над использованием хешей md5, чтобы можно было сделать один запрос на сервер rails, вернув моему сценарию именно то, что нужно загрузить изображения (я не хочу дубликатов).Ruby On Rails: Получить md5-хэш скрепки image

В сценарии я вычисляя md5 успешно с

require 'digest/md5' и md5 = Digest::MD5.file(filename).hexdigest

На сервере для того, чтобы проверить, если md5s то же самое (изображение будет загружено против образа на сервере) I необходимо вычислить md5 каждого изображения скрепки на сервере.

Изображения называются TestImages и модель выглядит этот

class TestImage < ActiveRecord::Base 
    has_attached_file :image, styles: {thumbnail: '100x100', small: '350x350'} 
    validates_attachment :image, content_type: {content_type: ["application/octet-stream", "multipart/form-data", "image/jpg", "image/jpeg", "image/png", "image/gif"]} 
    belongs_to :build 
    belongs_to :test 
end 

Люди говорят, что скрепка добавила функциональность отпечатка пальца (md5 представление), но я не уверен, о том, как установить, что. Кажется, это делается автоматически, но его нужно хранить в виде столбца в базе данных? Вот еще одно сообщение, которое я смотрел на Rails: How does MD5 checksum work in paperclip?

Если он не работает с использованием paperclip (отпечатка пальца скрепки), я мог бы сделать тот же метод дайджест/md5, что и в скрипте, но я не могу найти полный путь изображения скрепки.

Используя это не работает image.md5 = Digest::MD5.file(test_image.image.path).hexdigest

Это дало следующее сообщение об ошибке:

Errno::ENOENT (No such file or directory @ rb_sysopen - /Users/scott.bishop/Code/visual-automation/public/system/test_images/images//original/testBasic_2x.png): 
    app/controllers/test_images_controller.rb:37:in `create' 

я не уверен, какой путь он хочет. Любая помощь приветствуется.

ответ

0

Оказалось, что путь изображения скрепки работает.

require 'digest/md5' 
image.md5 = Digest::MD5.file(PAPER_CLIP_IMAGE.path).hexdigest