将回形针从插件更新为gem时出现问题



我显然有一个巨大的问题,从插件版本的回形针切换到gem版本在我的应用程序。这是我的印象,应该有一个插件和指定版本的gem之间没有任何区别。然而,我并不认为这是一个容易的转变。

Rails 2.3.11, Ruby 1.8.7

我使用的插件版本是2.3.3版本,于2010年8月2日升级。试图将其更新到同一版本的gem基本上杀死了我所有的测试,无法加载没有加载附件的工厂模型。看起来validate_attachment_content_type也试图验证附件的存在,但是找不到它,所以一切都开始中断。再一次,这个插件没有任何问题,在我们使用它的这段时间里,我也没有遇到任何问题。另一方面,这个问题似乎没有发生在2.3.4版本之后。那完全是另一个问题了。

基本上,在2.3.4及以上的所有版本中,我得到以下问题:

can't convert nil into String
/home/joshua/.rvm/gems/ruby-1.8.7-p334@paperclip_upgrade/gems/paperclip-2.3.15/lib/paperclip/storage/s3.rb:163:in `extname'
/home/joshua/.rvm/gems/ruby-1.8.7-p334@paperclip_upgrade/gems/paperclip-2.3.15/lib/paperclip/storage/s3.rb:163:in `to_file'
/home/joshua/.rvm/gems/ruby-1.8.7-p334@paperclip_upgrade/gems/paperclip-2.3.15/lib/paperclip/attachment.rb:94:in `assign'
/home/joshua/.rvm/gems/ruby-1.8.7-p334@paperclip_upgrade/gems/paperclip-2.3.15/lib/paperclip.rb:279:in `avatar='
/home/joshua/railscamp/app/app/models/organization.rb:311:in `copy_membership'
在访问组织模型的所有测试中

在这种情况下,明显的违规代码试图将成员模型从一个组织克隆到另一个组织,其中*行是违规调用。

  def copy_membership(membership)
    m = membership.clone
    u = m.user.clone
    u.organization = self
    m.organization = self
    begin
      m.avatar = membership.avatar         *
    rescue RuntimeError
      m.avatar = nil
    end
    m.user = u
    m.save
    m
  end

这对任何人都有意义吗?为什么插件可以工作,但是相同版本的宝石却破坏了一切?

更新:我似乎也没有任何回形针耙任务可用。什么好主意吗?

事实证明,我们应该检查文件名是否有效,而不是依赖于检测化身存在的通用运行时错误。

最新更新