全局安装的gem的Rails rake任务

问题描述

我正在尝试编写rake文件以从csv导入数据,并且我想使用smarter_csv gem。我已经在全球范围内安装了gem(我不想将其添加到我的Gemfile中,因为这是一项一次性的任务)。

在我的rake文件中,我需要'smarter_csv',但是当我运行任务时,出现以下错误:

rake aborted!
LoadError: cannot load such file -- smarter_csv

我可以找到的每个rake示例都告诉您只需要'foo'。要求smarter_csv之后,我可以在irb中手动运行代码。

我想念什么?

(如果重要的话,我正在macOS Catalina上使用rbenv)

解决方法

Rails使用捆绑程序,并将gemfile中提到的gem加载到内存中。看起来您没有其他选择。

我有一个类似的用例,我试图将其放入这样的开发小组中,

group :development do
  gem 'smarter_csv'
end
,

如果您确实希望在不将其包含在Gemfile中的情况下加载它,则可以在rake任务中执行以下操作:

$: << '/Users/<user>/.rvm/rubies/ruby- 
x.x.x/lib/ruby/gems/x.x.x/gems/smarter_csv-x.x.x/lib'
require 'smarter_csv'

不过,我认为,将带有require: false选项的Gem文件中的gem选项更合适。除非您明确要求,否则不会加载该宝石。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...