Kiel etendi Rake taskojn
Rake estas ilo en rubeno kiu egalas al make
en Unikso aŭ ant
en la ĝava mondo. Ĉi tio ne estas enkonduko al la ilo, sed mezaj nivelaj lertaĵoj.
Aldoni antaŭ aŭ post taskon
Ni diru ke vi havas Rake-a taskon kaj vi volas modifi ĝin iel per antaŭ aŭ post metaĵo. Estas do metodoj por fari tion sed nur unu estas rekomendata.
Bazo
task :bazo do
puts "bazo"
end
task :antaŭ do
puts "antaŭ"
end
task :post do
puts "post"
end
Nun ni havas tri taskojn kiujn eliras siajn nomojn. Vi povas meti tion en dosieron nomitan Rakefile
kaj enmeti rake bazo
aŭ simila por plenumi ĝin.
Malbone
Unu por antaŭenmeti taskon:
task :bazo => [:antaŭ]
antaŭ
bazo
Por postmeti taskon
task :bazo do
Rake::Task[:post].invoke
end
bazo
post
Aŭ ambaŭ:
task :bazo => [:antaŭ] do
Rake::Task[:post].invoke
end
antaŭ
bazo
post
Oni eĉ povas enmeti kodon rekte
task :bazo => [:antaŭ] do
puts "saluton"
Rake::Task[:post].invoke
puts "ĝis"
end
antaŭ
bazo
saluton
post
ĝis
Bone
Pli bona metodo estas uzi la enhance
(plibonigi) medoto.
Rake::Task[:bazo].enhance [:antaŭ]
antaŭ
bazo
Por postmeti taskon
Rake::Task[:bazo].enhance do
Rake::Task[:post].invoke
end
bazo
post
Aŭ ambaŭ:
Rake::Task[:bazo].enhance [:antaŭ] do
Rake::Task[:post].invoke
end
antaŭ
bazo
post
Denove kun la rekta koda enmetata:
Rake::Task[:bazo].enhance [:antaŭ] do
puts "saluton"
Rake::Task[:post].invoke
puts "ĝis"
end
antaŭ
bazo
saluton
post
ĝis
Konkludo
Se vi ne volas aldoni funkcion al taskon sed tute anstantaŭigi ĝin vi povas forigi la jaman taskon:
task :bazo do
puts "bazo"
end
Rake::Task[:bazo].clear_actions
Rake::Task[:bazo].clear_prerequisites
task :bazo do
puts "nova bazo"
end
nova bazo
Vi ankaŭ povas krei helpilojn
class Rake::Task
def forigu
clear_actions
clear_prerequisites
end
end
task :bazo do
puts "bazo"
end
Rake::Task[:bazo].forigu
task :bazo do
puts "nova bazo"
end
nova bazo
Nun ke ne kreis tion, Rake donos al ni la clear
metodo kiu faras la saman kiel forigu
kaj finfine ni povas krei nian anstantaŭigu
medoton
class Rake::Task
def anstantaŭigu(&block)
clear
enhance(&block)
end
end
task :bazo do
puts "bazo"
end
Rake::Task[:bazo].anstantaŭigu do
puts "nova bazo anstantaŭigita"
end
nova bazo anstantaŭigita
Fino
Sed nur ĉar vi povas fari ĉi tion ne signifas ke vi devas. Se vi havas novan membron al via skipo, ri ne supozas ke la signifon de la taskon ŝanĝiĝis, kaj povas esti doloriga leciono. Se vi faras ŝanĝon al taskon, mi rekomendu fari ilin en dosiero nomitan ŝanĝoj.rake
, etendoj.rake
, aŭ anstantaŭigoj.rake
aŭ ion simila kaj dokumenti la fakton ke ĝi ŝanĝiĝis.