hum*_*isy 23 ruby-on-rails imagemagick paperclip
几天来,我一直在抨击我.最近,我的图片上传器已停止正常工作.我已经研究了几种可能性,但没有一个建议的解决方案适用于我的情况.
错误消息是:
#<Paperclip::Errors::NotIdentifiedByImageMagickError:Paperclip::Errors::NotIdentifiedByImageMagickError>
Run Code Online (Sandbox Code Playgroud)
以下是详细信息:
development.rb包含适当的路径(我已经验证它是正确的使用which identify)
Paperclip.options[:command_path] = "/usr/local/bin/"
Run Code Online (Sandbox Code Playgroud)
Gemfile.lock (相关部分)
paperclip (3.4.1)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (~> 0.5.0)
Run Code Online (Sandbox Code Playgroud)
MODEL(我正在更新教室对象,但图片位于位置模型中. (Classroom has_one :location, :as => :locatable)
模型 location.rb
class Location < ActiveRecord::Base
## Paperclip method for uploading location images
has_attached_file :picture, :styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"}, :convert_options => {:show => "-gravity center"}
has_attached_file :building_sign, :styles => { :show => ["1200x500#", :jpg], :medium => ["300x300#", :jpg], :thumb => ["100x100#", :jpg] }, :convert_options => {:show => "-gravity center"}
belongs_to :locatable, :polymorphic => true
belongs_to :location_type
validates :name, :presence => true
validates :latitude, :presence => true,
:length => {:within => 9..18},
:numericality => true
validates :longitude, :presence => true,
:length => {:within => 9..18},
:numericality => true
end
Run Code Online (Sandbox Code Playgroud)
调节器 classrooms_controller.rb
def update
@classroom = Classroom.find_by_facility_code_heprod(params[:id].upcase)
respond_to do |format|
if @classroom.update_attributes(params[:classroom])
format.html { redirect_to(@classroom, :notice => 'Classroom was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @classroom.errors, :status => :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
我试过的.
我尝试过宝石版本的变体,包括
# variation 1
gem 'paperclip', '~> 2.8.0'
gem "cocaine", "=0.3.2"
# variation 2
gem "paperclip", "~> 3.4.0"
gem "cocaine", "= 0.4"
# variation 3 (which is what is reflected in the included Gemfile.lock info above).
gem "paperclip", "~> 3.4.0"
Run Code Online (Sandbox Code Playgroud)如果我删除缩放,
:styles => {:show => "1200x500#", :medium => "300x300#", :thumb => "100x100>"},
:convert_options => {:show => "-gravity center"}
Run Code Online (Sandbox Code Playgroud)
上传工作,但我有点需要缩放;-)
谁能看到我失踪的东西?
rwc*_*c9u 22
我们遇到了这个问题,结果发现这是一个没有安装ghostscript的问题.我接受了Scott Cornwell的建议并删除了错误的沉默,然后确定转换失败,因为ghostscript不可用.
brew install ghostscript
Run Code Online (Sandbox Code Playgroud)
修复了我们的问题.
Sco*_*ell 10
虽然我的服务器在Linux上,但我遇到了同样的问题.不能告诉你究竟该怎么做,因为我没有Mac测试,但希望这指向你正确的方向.
这对我有用ImageMagick 6.8.5-5,Paperclip 3.4.2,最新版本的可卡因,Rails 3.2.13:
我进入了Paperclip gem中的geometry_detector_factory.rb并注释了识别调用周围的2行:( 这一步没有必要,只是解释我做了什么来确定问题)
#silence_stream(STDERR) do
Paperclip.run("identify", "-format '%wx%h,%[exif:orientation]' :file", :file => "#{path}[0]")
#end
Run Code Online (Sandbox Code Playgroud)
以及相应的"结束"声明.这使我在运行"identify"命令时可以在命令行上看到错误.
基本上错误说:"此图像格式没有解码代理"
您可能会查找该错误并将其弄清楚,但基本上我所做的是转到usr/local/bin并运行:( 也没必要,除非您想查看已安装的内容)
convert -list configure
Run Code Online (Sandbox Code Playgroud)
并寻找DELEGATES线.我有另一台运行ImageMagick的Linux服务器,在比较两者后,我意识到新服务器只安装了2个代理.我能够跑:
yum install ImageMagick-devel
Run Code Online (Sandbox Code Playgroud)
然后使用make,make install重新编译ImageMagick并且它工作正常.
您也可以在ImageMagick网站上手动找到代理并逐个安装,但该库几乎涵盖了它.
调试ImageMagick?是不是没有人有时间!
小智 6
如果我的窗口开发环境有问题,请使用paperclip 3.5.2,可卡因0.5.3和ImageMagic 6.8.8.
解决方案是添加:
Paperclip.options[:command_path] = 'C:\Program Files\ImageMagick-6.8.8-Q16'
Run Code Online (Sandbox Code Playgroud)
to config/environment/development.rb
小智 1
我刚刚解决了这个问题。brew 创建一个目录调用 Cellar,/usr/local/Cellar 验证您是否没有两个 ImageMagick,我有一个名为 ImageMagick-Ruby182,所以,如果您有它,请运行brew 卸载 ImageMagick-Ruby182,以及正常的 imagemagick,并重新安装图像魔法。
| 归档时间: |
|
| 查看次数: |
16716 次 |
| 最近记录: |