У меня возникла большая проблема. Я действительно пытался, но я не могу решить эту проблему самостоятельно, поэтому я надеюсь, что люди могут помочь мне здесь.
Прежде чем говорить о моей проблеме, я должен сказать, что использую Paperclip и IMGKit в моем проекте, но я думаю, что проблема в Paperclip.
Я создаю Rails Task
, чтобы делать снимки с домашней страницы некоторых сайтов. Некоторое время назад все работало нормально, но теперь все глючит. Я импортирую свою настоящую базу данных из Heroku на локальный хост (без каких-либо изображений и миграции скрепки), запускаю миграцию, удаляю все старые файлы из «public/system» и снова запускаю свою задачу (чтобы сделать снимок всех веб-сайтов).
Итак, теперь у меня есть:
- Пути и исходные изображения генерируются, но когда я пытаюсь загрузить их в представлении, это просто отображается как неработающее изображение.
- Скрепка не создает пути и преобразованные изображения
:styles
. - Сайты, на которых нет изображения, я правильно вижу изображение по умолчанию.
- ImageMagick, кажется, работает, я пытаюсь преобразовать некоторые изображения и работает как шарм.
Давайте посмотрим на код. Предположим, что я запускаю задачу, которая будет выполнять эту задачу для всех сайтов в моей базе данных. В моей архитектуре сайты называются элементами.
Девелопмент.рб
#config/environments/development.rb
# "which convert" give me this path
Paperclip.options[:command_path] = "/usr/local/bin/"
Товар.rb (модель)
Моя задача просто вызывает object.save для каждого сайта в БД, поэтому мой код начинается с before_save
.
has_attached_file :image,
:styles => { :small => "200x147#" },
:convert_options => { :small => "-quality 75 -strip" },
:default_url => '/images/:style/bitcoin-earth.jpg'
before_save :generate_data
def generate_data
self.image = get_image(self.id, self.url_original)
end
# Take snapshot of the website
def get_image(filename, link)
kit = IMGKit.new(link.to_s, :quality => 100, :width => 1024, :height => 768)
file = Tempfile.new(["template_#{filename}", 'png'], 'tmp',
:encoding => 'ascii-8bit')
file.write(kit.to_img(:png))
file.flush
return file
end
Вид
<%= image_tag store.image.url %>
Gemfile
gem "paperclip"
Если я попытаюсь запустить rake paperclip:refresh:missing_styles
, задача завершится очень быстро без каких-либо ошибок. Но если я попытаюсь запустить rake paperclip:refresh CLASS=Item
, я получу:
Image Paperclip::Errors::NotIdentifiedByImageMagickError
И да, я уже искал его и не нашел решения для своего случая.
Небольшой совет?
Когда я проверяю элемент в своем проекте и пытаюсь увидеть источник изображения элемента, я вижу:
http://localhost:3000/public/system/items/images/000/000/216/original/template_21620140109-14507-1c0yszzpng?1389305824
Но если я зайду в папку своего проекта, я просто увижу изображение под названием template_21620140109-21209-1yls03opng
. Обратите внимание, что там не существует ?1389305824. См. изображение выше.
Ну, я думаю, это все. В чем может быть проблема? Мне очень нужно решить эту проблему, пожалуйста, помогите мне :/
[Отредактировано 10 января 2013 г.]
Item.rb (модель):
before_save :generate_data
def generate_data
file = File.open(get_image(self.id, self.url_original))
self.image = file
file.close
end
def get_image(filename, link)
kit = IMGKit.new(link.to_s, :quality => 100,
:width => 1024, :height => 768)
file = Tempfile.new(["template_#{filename}", '.png'], 'tmp',
:encoding => 'ascii-8bit')
file.write(kit.to_img(:png))
file.flush
return file
end
Теперь у меня нет ошибок на консоли при получении изображений и сохранении в БД, но Paperclip по-прежнему не генерирует мои :styles. Когда я перехожу к log/development.log
, я вижу эту ошибку, но я не знаю, что я могу сделать, чтобы решить:
Command :: file -b --mime 'tmp/template_24320140110-17577-80zj1c.png'
Command :: identify -format '%wx%h,%[exif:orientation]' '/tmp/template_24320140110-17577-80zj1c20140110-17577-mqa2q3.png[0]'
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: Paperclip::Errors::NotIdentifiedByImageMagickError>
Я думаю, что мы становимся ближе, пожалуйста, продолжайте помогать мне :)