从rake任务中动态添加gem

时间:2014-09-15 19:17:46

标签: ruby rubygems rake bundler

我正在尝试将mongo gem用于数据迁移rake任务。我不想将它添加到整个项目的Gemfile,因此可以从这个单一的rake任务中使用它。如何仅为该rake任务动态地将mongo添加到捆绑包中?

我尝试过使用Bundler::Injector::inject,但我需要bundle install。如果我在任务中运行它,则捆绑器已经初始化,因此require 'mongo'仍然失败。我应该做些什么来重新加载捆绑包,还是实际上有一种干净的方法呢?

1 个答案:

答案 0 :(得分:1)

使用:require => false

将其添加到您的Gemfile中
gem "mongo", :require => false

这将允许bundler安装它并设置加载路径,但它实际上不会加载gem。

在您的佣金任务中,只需require "mongo"即可在需要时加载它。