我有一个Capistrano部署脚本,可以将我的本地数据库导出到远程服务器,反之亦然。
这是一个这样的任务......
desc "Imports the remote database into your local environment"
task :pull do
# Create dump of remote db
invoke 'db:backup'
on roles(:app) do
run_locally do
# Create dump of current local db
execute "mysqldump -u #{fetch(:local_db_user)} -p#{fetch(:local_db_password)} #{fetch(:local_db_name)} > #{fetch(:local_backup_file)}"
# Import remote db into local
execute "mysql -u #{fetch(:local_db_user)} -p#{fetch(:local_db_password)} #{fetch(:local_db_name)} < db_backups/#{fetch(:curr_stage)}/#{fetch(:backup_filename)}.sql"
end
end
Rake::Task['db:cleanup_local'].execute
end
但是我在本地运行虚拟主机(Vagrant box)所以要做本地数据库任务需要SSH进入它。
我想要做的是在Capistrano选项中添加一个选项,如果存在,会在ssh vagrant@192.168.10.10
和mysqldump
命令的开头添加类似mysql
的内容,如果没有定义的话不添加任何东西。
所以我希望我的本地数据库连接细节看起来像
set :local_db_host, "127.0.0.1"
set :local_db_name, "database_dev"
set :local_db_user, "homestead"
set :local_db_password, "secret"
set :local_ssh, "vagrant@192.168.10.10"
如何在Capistrano任务中以一种整洁的方式添加此选项?非常感谢任何帮助。