Eu estava tentando usar envdir em uma implantação Capistrano, então precisei prefixar todos os comandos rake com envdir secret
. Depois de uma hora examinando os códigos capistrano, vi que por trás de sua magia estava o sshkit .
O que fiz foi definir um after rvm:hook
para prefixar o rake da seguinte forma:
after 'rvm:hook', 'deploy:prefix_rake'
desc 'Overwrites the default rake command and adds a prefix'
task :prefix_rake do
SSHKit.config.command_map[:rake] = "envdir secret #{ SSHKit.config.command_map[:rake] }"
end
O que command_map
faz é definir o comando para ser executado quando você fizer isso execute :command
. Deve ser um símbolo para fazê-lo funcionar.
Agora ele funciona bem com capistrano-rvm e configura o env vars antes de qualquer :rake
ser executado.