-6ren">
gpt4 book ai didi

ruby-on-rails-3 - Ruby on Rails,回形针 : "identify" command working in cmd but not in app

转载 作者:行者123 更新时间:2023-12-01 08:18:17 24 4
gpt4 key购买 nike

我已经在我的 Windows 7 64 位上安装了 ImageMagick 并且我有 Paperclip Gem。我的用户模型如下所示:

   class User < ActiveRecord::Base
# Paperclip
has_attached_file :photo,
:styles => {
:thumb=> "100x100#",
:small => "150x150>" }
end

在 paperclip.rb 和 development.rb 中,我有:
Paperclip.options[:command_path] = 'C:/Program Files/ImageMagick-6.6.7-Q16'

我的 _form 看起来像这样:
    <%= form_for(@user, :html => { :multipart => true } )  do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

<ul>
<% @user.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="field">
<%= f.label :username %><br />
<%= f.text_field :username %>
</div>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :crypted_password %><br />
<%= f.text_field :crypted_password %>
</div>
<div class="field">
<%= f.label :password_salt %><br />
<%= f.text_field :password_salt %>
</div>
<%= f.file_field :photo%>
<div class="actions">
<%= f.submit %>
</div>

<% end %>

enter code here

上传图片时出现以下错误:
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: C:/Users/John/AppData/Local/Temp/stream20110212-6576-1us1cdl.png is not recognized by the 'identify' command.>  

我可以在我的 cmd 中在该图像上使用识别,并且它可以毫无问题地返回有关图像的元数据。

如果可以的话请帮忙。我已经被困在这个问题上一天多了。

最佳答案

这是由于 lib/paperclip/command_line.rb 中的 Paperclip gem 中的错误造成的file .

def full_path(binary)
[self.class.path, binary].compact.join("/")
end
full_path函数生成带有反斜杠的命令文件名。
"C:\Program Files\ImageMagick-6.7.0-Q16"/identify

此命令在 Windows 上失败,因为 cmd当命令文件是 long file name 时,shell 会抛出错误带反斜杠。

有两种方法可以解决此问题。

使用 short file name作为命令路径。
Paperclip.options[:command_path] = 'C:/PROGRA~1/IMAGEM~1.0-Q'

注意:您可以按如下方式获取短文件名:
dir /x "C:\Program Files*"
dir /x "C:\Program Files\ImageMagick-6.7.0-Q16*"

猴子修补回形针 gem config\initializers\paperclip.rb .

我在 2.3.11 上对此进行了测试。
class Paperclip::CommandLine
def full_path(binary)
[self.class.path, binary].compact.join(File::ALT_SEPARATOR||File::SEPARATOR)
end
end

现在, identify命令是使用正确的路径分隔符生成的。
"C:\Program Files\ImageMagick-6.7.0-Q16"\identify

我更喜欢第二种方法,如 command_path更容易配置。

关于ruby-on-rails-3 - Ruby on Rails,回形针 : "identify" command working in cmd but not in app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4981336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com