为什么Paperclip的后处理功能无法工作?

3

你好,我一直在寻找关于Paperclip后处理的各种教程,但是不知何故,我无法调用'Make'方法。

请看这里第36行... http://pastie.org/private/epfgcxywhyh4wpmozypg

它正常上传,没有任何错误或警告,但我永远看不到'Make'方法中的puts语句,这告诉我它没有被调用。

编辑

我可以在模型中运行它,没有问题,并且我得到了True,

def class_exists?(class_name)
   klass = Paperclip.const_get(class_name)
   return klass.is_a?(Class)
rescue NameError
   return false
end

任何想法?

1
你确定 FileContents 类已经被加载了吗? - tilleryj
这就是我试图通过第36行的puts验证的内容,我还尝试添加了一个调试器(ruby-debug),但它从未被调用,因此我想知道为什么它没有被调用。有没有其他方法可以验证FileContents类是否被加载? - yekta
尝试在文件的第一行引发异常(raise 'here')。这将至少验证文件正在被加载,我认为这是一个好的起点。 - tilleryj
2个回答

4
两天前我也遇到了同样的问题。以下是我解决问题的步骤:
打开命令提示符,输入"which convert"命令。这是ImageMagick命令,如果显示/usr/bin/convert,则尝试添加:
Paperclip.options[:command_path] = "/usr/bin"

在你的 config/environments/development.rb 文件中,去掉 /convert。
然后将你的文件名从 file_contents.rb 改为 paperclip_postprocess.rb 并放入目录:RAILS_ROOT/config/initializers/paperclip_postprocess.rb
您可以通过在模型中添加以下行来交叉检查您的附件是否被处理:
   before_post_process :before_post_process
   after_post_process :after_post_process

   def before_post_process
        puts "===========Before processing attachment==========="
   end

   def after_post_process
        puts "-----------After processign attachment------------"
   end

请看这里

至少对我有效。


0
我注意到在Paperclip的README中有这样一行:

注意:因为处理器通过将原始附件转换为样式来操作,如果没有定义样式,则不会运行任何处理器。

看了你的粘贴内容,你定义了除了:style参数以外的所有内容,所以可能这就是问题所在?

是的,我尝试添加 :styles => { :chaff => [] } 但是出现了相同的问题。 - yekta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接