我这里有个大问题。我真的试过了,但我自己无法解决这个问题,所以我希望人们可以在这里帮助我。
在谈论我的问题之前,我必须说我在我的项目中使用了Paperclip和IMGKit,但我认为问题出在 Paperclip 上。
我创建了一个Rails Task
从某些站点的主页拍摄快照。前段时间一切正常,但现在一切都失败了。我将我的真实数据库从 Heroku 导入到 localhost(没有任何图像和回形针的迁移),运行迁移,从“公共/系统”中删除所有旧文件并再次运行我的任务(拍摄所有网站的快照)。
所以,现在我有:
- 生成了路径和原始图像,但是当我尝试在 View 中加载它们时,这只是显示为损坏的图像。
- Paperclip 不会生成
:styles
. - 没有图片的网站,我可以正确看到我的默认图片。
- ImageMagick 似乎正在工作,我尝试转换一些图像并像魅力一样工作。
让我们看一下代码。假设我正在运行一个任务,它将对我数据库中的所有站点执行此任务。这些网站在我的架构中被称为“项目”。
发展.rb
#config/environments/development.rb
# "which convert" give me this path
Paperclip.options[:command_path] = "/usr/local/bin/"
Item.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 %>
宝石文件
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”。见上图。
嗯,我想就是这样。可能是什么问题?我真的需要解决这个问题,请帮助我:/
[ 2013 年 1 月 10 日编辑]
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>
我想我们越来越近了,请继续帮助我:)