Ruby on Rails,Paperclip:“识别”命令在 cmd 中工作,但在应用程序中不起作用

2023-11-29

我已经在 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 file.

def full_path(binary)
  [self.class.path, binary].compact.join("/")
end

The full_path函数生成带有反斜杠的命令文件名。

"C:\Program Files\ImageMagick-6.7.0-Q16"/identify

此命令在 Windows 上失败,因为cmd当命令文件是长文件名带有反斜杠。

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

Use the 短文件名作为命令路径。

Paperclip.options[:command_path] = 'C:/PROGRA~1/IMAGEM~1.0-Q'

Note:可以通过如下方式获取短文件名:

dir /x "C:\Program Files*"
dir /x "C:\Program Files\ImageMagick-6.7.0-Q16*"

猴子修补回形针宝石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更容易配置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails,Paperclip:“识别”命令在 cmd 中工作,但在应用程序中不起作用 的相关文章

随机推荐

  • 在元素上使用重复的类名?

    我发现有很多框架会在元素上添加新类名之前检查重复的类名 我认为这会降低性能 当元素有重复的类名时会出现问题吗 当使用重复的类名时 它还会应用 CSS 类 而不会发生冲突 div class aa bb cc aa div 可以简单地添加一个
  • 创建计算器(JS)

    我有一条线calc 2 add 3 add 5 res 并需要写一个解决方案 以便我有10因此 我试过这个 class Calc constructor num this num num add a this num a return th
  • 带有自定义滚动条的自动完成 jquery UI 插件

    有人尝试为 jquery UI 自动完成小部件制作自定义滚动条吗 我正在尝试将 jScrollPane jquery 组件与自动完成小部件结合使用 但到目前为止没有取得任何成功 如果有人知道一些带有自定义滚动条的 jquery 自动完成组件
  • 将循环放入 C 宏中

    我正在寻找一种将以下函数结构转换为宏的方法 我知道 这是一个愚蠢且毫无意义的例子 但它说明了这一点 因为我无法给出我的实际源代码 int foo int x int y do x y while x gt y return x y note
  • 使用新数据重新渲染漏斗高图

    我在 MVC3 应用程序中使用 highcharts 并且在数据修改后尝试刷新 但图表不刷新 我绘制的图表如下 function initializeChart chart1 new Highcharts Chart chart rende
  • 使用 Apache FTPClient 检索文件时如何保留修改日期?

    我在用org apache commons net ftp FTPClient用于从 ftp 服务器检索文件 当文件保存在我的计算机上时 保留文件上最后修改的时间戳至关重要 有人对如何解决这个问题有建议吗 这就是我解决它的方法 public
  • 不正确的位图复制/输出

    因此 我在尝试读取任何 24bpp 位图图像并在同一文件夹中重新创建它时 无法准确弄清楚到底出了什么问题 它适用于一张图像 但不适用于我测试过的其他两张图像 从位图中读取时 我使用标头本身中找到的信息 可以说我有三个问题 1 我是否正确读取
  • Maven 通配符匹配部分文件夹名称

    使用 maven clean plugin 我想删除所有以 tmp 开头的文件夹 Maven 通配符可以吗 我努力了
  • 该程序创建了多少个进程,包括初始父进程?

    我试图弄清楚该程序创建了多少个进程 包括初始父进程 正确答案应该是9 但是我不明白为什么答案是9 这9个进程是如何创建的 提前致谢 include
  • 是否有有效的跨域 iframe 高度自动调整器?

    我尝试了一些解决方案但没有成功 我想知道是否有一个解决方案 最好有一个易于遵循的教程 您有三种选择 1 使用iFrame调整器 这是一个简单的库 用于保持 iFrame 的大小适合其内容 它使用 PostMessage 和 Mutation
  • 为应用程序制作密码锁?

    我想为我的应用程序制作一个密码解锁屏幕 但我不确定如何去做 我希望它看起来像苹果设计的版本 即密码锁定设置屏幕 我该如何做这样的事情 一旦输入所有四位数字 代码就会立即与预设密码进行检查 Thanks 刚刚找到一个可以完美复制这一点的项目
  • J2ME 与 Sqlite

    J2me的移动应用程序是否有像SQLite这样的持久存储 如果有 请分享链接或一些示例代码 使简单的 J2ME 应用程序与后端持久数据库进行交互 是的 J2ME 有持久存储 称为 RMS MIDP 2 0 的一部分 看这里简短的教程 RMS
  • 旋转前后的 OpenGL 平移

    以下是代码 摘自http www glprogramming com red chapter03 html 关于如何绘制机器人的手臂和肩膀并通过一些用户输入旋转它们 glPushMatrix glTranslatef 1 0 0 0 0 0
  • 如何使用 OpenCV(模板匹配)检测和匹配标记

    我正在使用在特定区域包含标记的图像 我尝试使用模板匹配来做到这一点 这是 opencv 中定义为 cv MatchTemplate 的方法 我正在使用网络摄像头来检测它们 当前程序正在检测标记 因为我提供了与模板相同的标记 但我找不到一种方
  • 将对象添加到 ArrayList 并稍后修改

    如果我有一个 ArrayList 并向其中添加了一个对象 然后修改了该对象 那么此更改会反映在 ArrayList 中吗 或者当我将对象添加到 ArrayList 时 Java 创建一个副本并将其添加到 ArrayList 中 如果我将此对
  • Android 查看 inflateException

    我正在尝试创建一个自定义视图 手指绘画 但我遇到了此错误 而且我不知道如何修复它 谁能告诉我出了什么问题吗 LogCat 08 04 08 34 01 171 E AndroidRuntime 15664 java lang Runtime
  • python firestore 身份验证问题

    我正在将 python 与 firestore 一起使用 并尝试在后端创建一个客户端 我正在关注this教程 用下面的代码 import firebase admin from firebase admin import credentia
  • 从 SQLite 触发器中中止以下语句

    我想创建一个SQLite触发器与此类似 CREATE TRIGGER prevent duplicate emails BEFORE INSERT OF email ON users FOR EACH ROW BEGIN SELECT CO
  • extern 变量导致多重定义错误

    我一直在尝试使用 extern 来使用先前定义的变量 我以前没有使用过 extern 现在我需要使用它来定义一次变量并在多个文件中使用它们 我已经为这个问题编写了最小化的代码版本 我有四个文件 lib h ifndef LIB H defi
  • Ruby on Rails,Paperclip:“识别”命令在 cmd 中工作,但在应用程序中不起作用

    我已经在 Windows 7 64 位上安装了 ImageMagick 并且拥有 Paperclip Gem 我的用户模型如下所示 class User lt ActiveRecord Base Paperclip has attached