2013-07-10 61 views
0

我使用打包程序來管理我的寶石的依賴關係,並且我準備使用geminabox來託管我的寶石。使用打包程序的rake release是個壞消息,因爲我的寶石會轉到rubygems,而不是geminabox,但是從該任務中添加的功能(推送標籤等)確實很有幫助。覆蓋打包者的版本,但沒有把它放在gem

我寫了一個寶石它增加了能力rake release geminaboxrake release rubygems,但現在我的圖書館(其中有無關geminabox)取決於這個捆綁/ geminabox的事情,而這又取決於geminabox,以及我未來的辛納屈,機架......突然間我的發展要求很大,只是針對我的發展情況。其中一些寶石將被公開發布,這些geminabox開發依賴對其他任何人都是不必要的。

我意識到,將寶石注入到捆綁器gemset中特別是捆綁器旨在防止的問題,因此,您有什麼建議將我自己的自定義發佈功能與gem本身綁定在一起?

回答

0

我在下面的行中重新定義了我的寶石Rakefiles中的默認Bundler發佈任務。你是對的,你不想吸吮Sinatra和整個臃腫的堆棧。該做的一切

你留下了兩個選擇......

  1. 寫定製rake任務,你從頭需要
  2. 重新捆紮機的默認發佈的任務,因爲這就是你想要的行爲方式不同的唯一位。

Rake文件

require "bundler/gem_tasks" 

Rake::TaskManager.class_eval do 
    def remove_task(task_name) 
    @tasks.delete(task_name.to_s) 
    end 
end 
def remove_task(task_name) 
    Rake.application.remove_task(task_name) 
end 

remove_task :release # So we don't publish to rubygems.org 
desc "release to geminabox" 
task :release => [:build] do |t| 
    system "gem inabox" 
end