namespace :capenv do
desc 'copy .env to release_path' task :copy do on roles(:all) do capenv = fetch(:capenv) upload! StringIO.new(capenv.content), File.join(fetch(:release_path), capenv.filename), mode: capenv.filemode end end task :set_envs do capenv = Capistrano::Env::Config.new(&fetch(:capenv)) set :capenv, capenv set :default_environment, capenv.envs end
end
namespace :load do
task :defautls do set :capenv, -> { ->(env) {} } end
end
stages.each do |stage|
after stage, 'capenv:set_envs'
end
before 'deploy:updated', 'capenv:copy' before 'deploy:restart', 'capenv:copy'