0

我正在使用 bundler 来管理我的 gem 的依赖项,并且我正在使用 geminabox 来托管我的 gem,一旦它们准备好了。使用 bundler'srake release是个坏消息,因为我的 gems 将转到 ruby​​gems,而不是 geminabox,但是该任务的附加功能(推送标签等)确实很有帮助。

rake release geminabox我写了一个 gem,它增加了and的能力rake release rubygems,但是现在我的库(与 geminabox 无关)依赖于这个 bundler/geminabox 的东西,它又依赖于 geminabox,并且进一步依赖于 sinatra,rack...所有突然我的开发需求很大,只针对我的开发情况。其中一些 gem 将公开发布,其他任何人都不需要这些 geminabox 开发依赖项。

我意识到将 gem 注入 bundler gemset 是 bundler 旨在防止的,所以你会推荐什么作为拥有我自己的自定义发布功能的方法,而不是绑定到 gem 本身?

4

1 回答 1

0

我已经按照以下几行在我的 gem 的 Rakefiles 中重新定义了默认的 Bundler 发布任务。你是对的,你不想吸进 Sinatra 和一大堆臃肿的堆栈。

你有2个选择...

  1. 编写自定义 rake 任务,从头开始完成您需要的一切
  2. 重新定义 Bundler 的默认发布任务,因为这是您想要表现不同的唯一一点。

耙文件

需要“捆绑器/gem_tasks”

Rake::TaskManager.class_eval 做
  def remove_task(task_name)
    @tasks.delete(task_name.to_s)
  结尾
结尾
def remove_task(task_name)
  Rake.application.remove_task(task_name)
结尾

remove_task :release # 所以我们不会发布到 ruby​​gems.org
desc "发布到 geminabox"
任务 :release => [:build] 做 |t|
  系统“宝石收件箱”
结尾
于 2014-01-10T16:48:50.530 回答