Rails:要求“RMagick”已过时。请改用“rmagick”。FactoryGirl

5
当我通过FactoryGirl和Faker创建一个对象时,会出现错误。
[1] pry(main)> FactoryGirl.create(:company)
[DEPRECATION] requiring "RMagick" is deprecated. Use "rmagick" instead

但是当我在开发数据库中创建对象时,一切都很正常。

这里有一个工厂。

  factory :company do
    title Faker::Company.name
    image Faker::Avatar.image("my-own-slug", "200x200")
  end 

如何修复?

7个回答

5

当程序执行到您的这一行时image Faker::Avatar.image("my-own-slug", "200x200"),这很可能是由于CarrierWave引起的。

CarrierWave上有一个问题,现在已经关闭并修复。您可以在Gemfile中包含GitHub提交,或者等待下一个gem发布。


请确认修复是否已合并到主分支中,需检查 lib/carrierwave/processing/rmagick.rb 文件。 - Mr H
修复已经合并 https://github.com/carrierwaveuploader/carrierwave/commit/71cb18bba4a2078524d1ea683f267d3a97aa9bc8 - Benj
1
修复已合并,但 0.11 版本尚未在 RubyGems 上发布,您可以使用以下命令捆绑它:gem "carrierwave", git: 'https://github.com/carrierwaveuploader/carrierwave.git', branch: '0.11-stable' - pic

4

首先,大多数人都希望像这样将rmagick包含在他们的捆绑包中:

gem 'rmagick', require: false

其次,rmagick 2.15.0 刚刚发布。(使用 bundle list 命令查找您的版本。)请使用 bundle update 命令将宝石升级到版本 2.15.0。

此时,您可能仍会遇到错误,因为删除该错误的拉取请求 on github 尚未合并。


谢谢您的回答,但我没有遇到这个错误 :) - wweare

3

虽然时间有点晚,但是这可能会帮助到某些人:

gem 'carrierwave', :github => 'satoruk/carrierwave' , :ref => '43179f94d6a4e62f69e812f5082d6447c9138480'
gem 'rmagick', require: false

这样可以得到已修复rmagick版本。我不确定为什么他们不将其合并到主分支。

希望有所帮助。


0

0

当我将一个 Rails 5 应用程序升级到 Rails 6 时,我遇到了同样的挑战。

这是我如何解决它的:

首先,我在 Gemfile 中添加了最新版本的 rmagick gem。截至本文撰写时,它是 rmagick 4.2

gem 'rmagick', '~> 4.2'

接下来,我检查了需要rmagick的文件。我修改了以下文件:
class Admin::FormPrecedentsController < Admin::BaseController

  require 'RMagick'

end

转换为:

class Admin::FormPrecedentsController < Admin::BaseController

  require 'rmagick'

end

就是这样了。

希望这能帮到你


0
只需更新你的carrierwave gem即可。
bundle update carrierwave

-1
如果您正在使用Carrierwave gem,您需要尝试将版本降级到0.7.0,在您的gemfile中添加'carrierwave','0.7.0',然后在控制台上运行'bundle update carrierwave'。

Carrierwave自0.7.0版本以来有许多重大变化,建议人们执行降级操作以消除警告信息并不是一件好事。 - Benj
当您使用的Rails和Ruby版本不是最新版本时,必须注意gem的版本,如果您同时使用旧版本和新版本,则会破坏您的应用程序...我的解决方案解决了该问题,使得版本与Rails和Ruby一致,至少在我的情况下,我更倾向于使用当前版本而不是将升级应用到所有环境中。 - rome3ro
它可能对你有效,但这不是一个可接受的“公共”答案。 - Benj
如果涉及兼容性版本问题,我认为这是一个可以接受的公共答案,可能会对其他遇到相同情况的人有所帮助。 - rome3ro
我将停止娱乐这个对话。请查看changelog https://github.com/carrierwaveuploader/carrierwave/blob/master/History.md - Benj

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