Capistrano 3运行每个命令两次(新安装)-配置问题

Thi*_* S. 4 git capistrano ruby-on-rails-3 capistrano3

我是第一次完成capistrano安装。大部分内容保留为默认设置,我配置了服务器,其身份验证和远程文件夹,以及对我的git存储库的访问权。

我使用capistrano将php代码部署到我的服务器。

cap临时部署cap生产部署功能,但是它们每个命令运行两次。当这些任务在服务器上执行得太快时,有时会导致问题,并返回错误代码,从而停止部署过程。

运行cap临时部署时我的输出示例

DEBUG[47ecea59] Running /usr/bin/env if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi on ftp.cluster013.ovh.net
DEBUG[47ecea59] Command: if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi
DEBUG[c450e730] Running /usr/bin/env if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi on ftp.cluster013.ovh.net
DEBUG[c450e730] Command: if test ! -d ~/www/test_server/repo; then echo "Directory does not exist '~/www/test_server/repo'" 1>&2; false; fi
Run Code Online (Sandbox Code Playgroud)

除了我自己定义的任务外,每个任务都执行相同的操作(在我的deploy.rb中,我定义了:set_distant_server任务,该任务在带有服务器信息的文件中移动)

我很确定我在初始配置期间错过了一些东西。

这是我的文件,仍然是默认设置:

# Load DSL and Setup Up Stages
require 'capistrano/setup'

# Includes default deployment tasks
require 'capistrano/deploy'

# Includes tasks from other gems included in your Gemfile
# require 'capistrano/rvm'
# require 'capistrano/rbenv'
# require 'capistrano/chruby'
#require 'capistrano/bundler'
#require 'capistrano/rails/assets'
#require 'capistrano/rails/migrations'

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
Run Code Online (Sandbox Code Playgroud)

接下来是我的deploy.rb文件:#config仅对Capistrano 3.1锁'3.2.1'有效

set :scm, :git
set :application, 'Application name'
# I use token authentification
set :repo_url, 'https://XXXXXXXXXXX:@XXXXXXX.git'

set :role, 'web'


# Default value for :log_level is :debug
set :log_level, :debug
set :tmp_dir, 'www/test_server/tmp'
set :keep_releases, 8


role :deploy_server, "XXXuser_name@XXXX_server"

task :set_distant do
    on roles(:deploy_server) do
        execute 'echo ------------******* STAGING *******------------'
        execute 'cp ~/www/test_server/current/access_distant.php ~/www/test_server/current/access.php'
        execute 'cp ~/www/test_server/current/session_distant.php     ~/www/test_server/current/session.php'
    end
end


after "deploy:finished", :set_distant
Run Code Online (Sandbox Code Playgroud)

这是我的staging.rb,简短得多:

 server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
 set :deploy_to, '~/www/test_server'
 set :branch, 'staging'
Run Code Online (Sandbox Code Playgroud)

和我的production.rb,非常相似:

 server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
 set :deploy_to, '~/www/beta/'
Run Code Online (Sandbox Code Playgroud)

我很确定我错过了使它正常运行的所有先决条件。我是红宝石,宝石的新手,而且很长时间没有使用外壳了。

有谁知道为什么这些命令要运行两次,以及如何解决?

预先,非常感谢。

附加信息:Ruby版本:ruby -v ruby​​ 2.1.2p95(2014-05-08修订版45877)[x86_64-darwin13.0]

Capistrano版本:cap -V Capistrano版本:3.2.1(Rake版本:10.1.0)

我没有创建或设置Gemfile,但我知道Capistrano 3不需要该文件。无论如何,我不知道该怎么做。