Skip to content

Instantly share code, notes, and snippets.

@steverob
Forked from joost/deploy.rb
Created March 27, 2014 10:05
Show Gist options
  • Save steverob/9804235 to your computer and use it in GitHub Desktop.
Save steverob/9804235 to your computer and use it in GitHub Desktop.
# encoding: UTF-8
# Place in config/deploy.rb
# See: https://gist.github.com/joost/9343156
# Adapted to work with rbenv
namespace :rails do
desc "Open the rails console on primary app server"
task :console do
on roles(:app), primary: true do
rails_env = fetch(:stage)
execute_interactively "#{bundle_cmd} #{current_path}/script/rails console #{rails_env}"
end
end
desc "Open the rails dbconsole on primary db server"
task :dbconsole do
on roles(:db), primary: true do
rails_env = fetch(:stage)
execute_interactively "#{bundle_cmd} #{current_path}/script/rails dbconsole #{rails_env}"
end
end
def execute_interactively(command)
user = fetch(:user)
port = fetch(:port) || 22
cmd = "ssh -l #{user} #{host} -p #{port} -t 'cd #{deploy_to}/current && #{command}'"
info "Connecting to #{host}"
exec cmd
end
def bundle_cmd
if fetch(:rbenv_ruby)
# FIXME: Is there a better way to do this? How does "execute :bundle" work?
"RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{File.join(fetch(:rbenv_path), '/bin/rbenv')} exec bundle exec"
else
"ruby "
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment