我正try 在rake任务中使用gem,但我不想在dev构建中包含它.所以不是在Gemfile的开发部分.
我不想把它包含在Gemfile中,因为它安装起来很慢,而且在M2Mac上并不总是能用.
所以我试着只将它包含在要使用它的rake任务中.
这是我精心设计的例子
namespace :utility do
task contrived_test_funct: :environment do
begin
gem 'rmagick'
rescue LoadError
system("gem install rmagick")
gem 'rmagick'
end
require 'RMagick'
file_names = Dir.glob(File.join("/tmp", "**", "*"))
file_names = file_names.select { |f| f.include?(".pdf") }
file_names.each do |file_name|
im = Magick::Image.read(file_name)
im[0].write(filename.gsub(".pdf",".jpg"))
end
end
end
这应该只是在我的临时目录中的所有PDF,并吐出他们作为JPG.如果我的gem文件中有这个Ruby ,并且移除了Begin/Resue块,那么这一切都会在我的本地系统上发挥作用.
当我删除gefile更改并取消对Begin/Resue块的注释时,它发生了故障
我明白了
Gem::LoadError: rmagick is not part of the bundle. Add it to your Gemfile.
问:我怎么能只在Rails应用程序/repo中的特定rake任务中要求gem呢?