2013-08-14 19 views
6

Sto ospitando una gemma privata su Gemfury e desidero ignorare l'attività rake release per inviare l'URL privato Gemfury anziché Rubygems.Override rake release task per utilizzare Gemfury

Mi piace mantenere la creazione del tag Git però.

Qualche idea in cui dovrei iniziare?

Ecco ciò che il mio Rakefile assomiglia:

require 'bundler/gem_tasks' 
require 'rspec/core/rake_task' 

RSpec::Core::RakeTask.new(:spec) 

task default: :spec 
task test: :spec 

risposta

5

effettivamente trovato la risposta:

Rakefile

require 'bundler/gem_tasks' 
require 'rubygems/builder' 
require 'gemfury' 
require 'gemfury/command' 

# Override rubygem_push to push to gemfury instead when doing `rake release` 
module Bundler 
    class GemHelper 
    def rubygem_push(path) 
     ::Gemfury::Command::App.start(['push', path]) 
    end 
    end 
end 

Ora quando si fa:

rake release 

Crea tag git e spinge al mio repository gem gemfury privato.

Ti consigliamo di creare un file in ~/.gem/gemfury con la tua chiave segreta:

--- 
:gemfury_api_key: 1H... 
+0

C'è un modo per specificare il gemfury_api_key sulla riga di comando? Mi piacerebbe che Jenkins facesse una build e spingesse la mia gemma, e non desideravo avere il segreto nel codice sorgente da qualche parte. –

+0

Questo è [come è implementato] (https://github.com/bundler/bundler/blob/master/lib/bundler/gem_helper.rb#L82). Non penso che quello che vuoi ottenere sia possibile. –

+1

Grazie - Mi sono reso conto solo più tardi che la directory '.gem' non si inserisce nella gemma pacchettizzata, che era la mia preoccupazione principale. –