将本地ssh选项添加到Capistrano任务

时间:2015-07-05 01:06:31

标签: ruby capistrano

我有一个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.10mysqldump命令的开头添加类似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任务中以一种整洁的方式添加此选项?非常感谢任何帮助。

0 个答案:

没有答案