如何解决全局安装的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选项更合适。除非您明确要求,否则不会加载该宝石。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。