8

我已将我的应用程序从 rails 2.3 迁移到 rails3,但我遇到了回形针问题。我看到在回形针 git 上有一个 rails3 的分支。

所以我在 Gemfile 中添加了“gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git', :branch => 'rails3'” 并启动命令包安装。

安装回形针后,上传工作正常,但样式不行。我看到了一个 hack 来修复它。

# in lib/paperclip/attachment.rb at line 293
def callback which #:nodoc:
  # replace this line...
  # instance.run_callbacks(which, @queued_for_write){|result,obj| result == false }
  # with this:
  instance.run_callbacks(which, @queued_for_write)
end

之后样式还可以,但我无法激活处理器。我的代码是:

has_attached_file                 :image,
                                  :default_url => "/images/nopicture.jpg",
                                  :styles => { :large   => "800x600>",
                                               :cropped => Proc.new { |instance| "#{instance.width}x#{instance.height}>" },
                                                :crop    => "300x300>" },
                                   :processors => [:cropper]

我的处理器位于 RAILS_APP/lib/paperclip_processors/cropper.rb 并包含:

module Paperclip
  class Cropper < Thumbnail
    def transformation_command
      if crop_command  and !skip_crop?
        crop_command + super.sub(/ -crop \S+/, '')
       else
         super
       end
    end

   def crop_command
      target = @attachment.instance
      trans = "";
      trans << " -crop #{target.crop_w}x#{target.crop_h}+#{target.crop_x}+#{target.crop_y}" if target.cropping?
      trans << " -resize \"#{target.width}x#{target.height}\""
      trans
   end

   def skip_crop?
     ["800x600>", "300x300>"].include?(@target_geometry.to_s)
   end
 end
end

我的问题是我收到此错误消息:未初始化的常量 Paperclip::Cropper 未加载裁剪的处理器。

有人有办法解决这个问题吗?

有关信息,我的应用程序在 rails 2.3.4 上运行良好。

4

7 回答 7

5

我也有同样的问题。似乎回形针处理器没有加载到 rails 3 中。在有人修复它之前,我解决了在 /config/initializers 中移动cropper.rb 文件的问题

于 2010-12-09T00:35:41.457 回答
2

重新启动服务器,为我工作:)

于 2010-03-22T11:41:33.377 回答
1

在您的 Photo.rb 类中,或者您以前需要 '.../cropper.rb' 的任何一个类中,您还必须将项目的根目录放在路径中:

require "#{config.root}/lib/paperclip_processors/cropper.rb" # required to make cropping work.

在它曾经只是需要“lib / ...”之前

于 2011-02-07T16:43:22.827 回答
1

我也得到了“未初始化的常量 Paperclip::Cropper”异常。但是你可以将你的cropper.rb 移动到paperclip lib 目录并添加require 'paperclip/cropper.rb'。它对我有用,但我使用捆绑器,所以它看起来很丑......

于 2010-05-17T14:12:14.130 回答
0

我建议您使用carrierwave,而不是回形针,它更快更容易https://github.com/jnicklas/carrierwave

于 2011-09-29T17:13:54.627 回答
0

我也有同样的问题。我正在使用此存储库中的回形针 gem:

gem "paperclip", :git => "git://github.com/JasonKing/paperclip.git", :branch => "rails3"

而且我还得到“未初始化的常量 Paperclip::Cropper”。重启服务器无效!

于 2010-03-29T09:36:00.890 回答
0

是的,将 Paperclip 安装为插件,它就可以工作了

于 2010-10-23T14:33:58.063 回答