Rails:要求 "RMagick" 已弃用。使用 "rmagick" instead.FactoryGirl
Rails: Requiring "RMagick" is deprecated. Use "rmagick" instead.FactoryGirl
当我通过 FactoryGirl 和 Faker 创建对象时,shell 显示错误
[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
怎么解决?
如果您在 Gemfile 中写入以下内容:
gem 'rmagick', :require => 'RMagick'
尝试重写如下:
gem 'rmagick'
首先,大多数人会像这样在他们的包中包含 rmagick:
gem 'rmagick', require: false
其次,rmagick 2.15.0 刚刚发布。 (使用 bundle list
查找您的版本。)使用 bundle update
.
将 gem 升级到版本 2.15.0
此时您可能仍然收到错误,因为要删除它的拉取请求是on github但尚未合并。
如果您使用的是 Carrierwave gem,您必须尝试将版本降级到 0.7.0,在您的 gem 文件中添加 'carrierwave','0.7.0' 然后 运行 在控制台上 'bundle update carrierwave'
当执行到您的行 image Faker::Avatar.image("my-own-slug", "200x200")
.
时,这肯定是 CarrierWave 造成的
CarrierWave 上有一个 issue 现在已关闭,修复已合并。要么在 GemFile 中包含 github 提交,要么等待下一个 gem 版本。
这已经很晚了,但它可能会对某人有所帮助:
gem 'carrierwave', :github => 'satoruk/carrierwave' , :ref => '43179f94d6a4e62f69e812f5082d6447c9138480'
gem 'rmagick', require: false
这应该会为您提供修复了 rmagick 的版本。我不确定他们为什么不将它合并到 master 中。
希望对您有所帮助。
只需更新您的 carrierwave gem 即可。
bundle update carrierwave
我在将 Rails 5 应用程序升级到 Rails 6[=15 时遇到了同样的挑战=]
这是我修复它的方法:
首先,我将 rmagick
gem 的最新版本添加到 Gemfile
。在撰写本文时,它是 rmagick 4.2:
gem 'rmagick', '~> 4.2'
接下来,我检查了需要 rmagick 的文件。我修改了以下文件:
class Admin::FormPrecedentsController < Admin::BaseController
require 'RMagick'
end
对此:
class Admin::FormPrecedentsController < Admin::BaseController
require 'rmagick'
end
就这些了。
希望对您有所帮助
当我通过 FactoryGirl 和 Faker 创建对象时,shell 显示错误
[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
怎么解决?
如果您在 Gemfile 中写入以下内容:
gem 'rmagick', :require => 'RMagick'
尝试重写如下:
gem 'rmagick'
首先,大多数人会像这样在他们的包中包含 rmagick:
gem 'rmagick', require: false
其次,rmagick 2.15.0 刚刚发布。 (使用 bundle list
查找您的版本。)使用 bundle update
.
此时您可能仍然收到错误,因为要删除它的拉取请求是on github但尚未合并。
如果您使用的是 Carrierwave gem,您必须尝试将版本降级到 0.7.0,在您的 gem 文件中添加 'carrierwave','0.7.0' 然后 运行 在控制台上 'bundle update carrierwave'
当执行到您的行 image Faker::Avatar.image("my-own-slug", "200x200")
.
CarrierWave 上有一个 issue 现在已关闭,修复已合并。要么在 GemFile 中包含 github 提交,要么等待下一个 gem 版本。
这已经很晚了,但它可能会对某人有所帮助:
gem 'carrierwave', :github => 'satoruk/carrierwave' , :ref => '43179f94d6a4e62f69e812f5082d6447c9138480'
gem 'rmagick', require: false
这应该会为您提供修复了 rmagick 的版本。我不确定他们为什么不将它合并到 master 中。
希望对您有所帮助。
只需更新您的 carrierwave gem 即可。
bundle update carrierwave
我在将 Rails 5 应用程序升级到 Rails 6[=15 时遇到了同样的挑战=]
这是我修复它的方法:
首先,我将 rmagick
gem 的最新版本添加到 Gemfile
。在撰写本文时,它是 rmagick 4.2:
gem 'rmagick', '~> 4.2'
接下来,我检查了需要 rmagick 的文件。我修改了以下文件:
class Admin::FormPrecedentsController < Admin::BaseController
require 'RMagick'
end
对此:
class Admin::FormPrecedentsController < Admin::BaseController
require 'rmagick'
end
就这些了。
希望对您有所帮助