【问题标题】:Adding a gem dynamically from within a rake task从 rake 任务中动态添加 gem
【发布时间】:2014-09-15 19:17:45
【问题描述】:

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

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

【问题讨论】:

    标签: ruby rubygems rake bundler


    【解决方案1】:

    使用 :require => false 将其添加到您的 Gemfile:

    gem "mongo", :require => false
    

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

    在您的 rake 任务中,只需 require "mongo" 在您需要时加载它。

    【讨论】:

    • 我在问如何在不强制所有人安装的情况下允许 rake 任务到 require 'mongo',因为它只需要一次性任务。
    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    相关资源
    最近更新 更多