Skip to content

Instantly share code, notes, and snippets.

@jyotty
Created April 16, 2014 19:54
Show Gist options
  • Save jyotty/10926381 to your computer and use it in GitHub Desktop.
Save jyotty/10926381 to your computer and use it in GitHub Desktop.
(somewhat lame) manipulation of .rbenv-vars in capistrano 3
namespace :rbenv do
namespace :vars do
desc "Display .rbenv-vars on all servers"
task :show do
on roles(:all) do |host|
execute "cat #{fetch(:deploy_to)}/.rbenv-vars"
end
end
desc "Add or update single .rbenv-vars setting (cap stage rbenv:vars:set[NAME,value])"
task :set, :varname, :varvalue do |t, args|
varname = args[:varname]
varvalue = args[:varvalue] || ""
on roles(:all) do |host|
unless /[A-Za-z_][0-9A-Za-z_]*/ =~ varname
error "rbenv:vars: invalid environment variable name #{varname}"
exit 1
end
if test("[ -f #{fetch(:deploy_to)}/.rbenv-vars ]")
execute "sed -ni '/^#{varname}=/ !p' #{fetch(:deploy_to)}/.rbenv-vars"
end
execute "echo '#{varname}=#{varvalue}' >> #{fetch(:deploy_to)}/.rbenv-vars"
end
end
desc "Remove single .rbenv-vars setting (cap stage rbenv:vars:unset[NAME])"
task :unset, :varname do |t, args|
varname = args[:varname]
on roles(:all) do |host|
unless /[A-Za-z_][0-9A-Za-z_]*/ =~ varname
error "rbenv:vars: invalid environment variable name #{varname}"
exit 1
end
if test("[ -f #{fetch(:deploy_to)}/.rbenv-vars ]")
execute "sed -ni '/^#{varname}=/ !p' #{fetch(:deploy_to)}/.rbenv-vars"
end
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment