Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Capistrano 3将每个命令运行两次(新安装)-配置问题_Ruby On Rails 3_Git_Capistrano_Capistrano3 - Fatal编程技术网

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

Ruby on rails 3 Capistrano 3将每个命令运行两次(新安装)-配置问题,ruby-on-rails-3,git,capistrano,capistrano3,Ruby On Rails 3,Git,Capistrano,Capistrano3,我刚刚第一次完成了capistrano的安装。大部分内容都留给默认设置,我配置了我的服务器、它的身份验证、远程文件夹以及对git存储库的访问 我使用capistrano将php代码部署到服务器上 cap staging deploy和cap production deploy功能,但它们会将每个命令运行两次。当这些任务在服务器上执行得太快时,有时会导致问题,返回错误代码,从而停止部署过程 运行cap staging deploy时的输出示例 除了我自己定义的任务(在我的deploy.rb中,我定

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

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

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

运行cap staging deploy时的输出示例

除了我自己定义的任务(在我的deploy.rb中,我定义了一个:set_remote_server任务,该任务在包含服务器信息的文件中移动)之外,它对每个任务都执行相同的操作

我很确定我在最初的配置中遗漏了一些东西

这是我的capfile,仍为默认设置:

# 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 }
然后是my deploy.rb文件: #配置仅对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
这是我的staging.rb,短得多:

 server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
 set :deploy_to, '~/www/test_server'
 set :branch, 'staging'
和my production.rb非常相似:

 server 'XXX_server', user: 'XXXuser_name', roles: %w{web}, port: 22, password: 'XXXpassword'
 set :deploy_to, '~/www/beta/'
我很确定我错过了使它运行良好的所有先决条件中的一个步骤。我是ruby和gems的新手,很长时间没有使用shell

有人知道为什么这些命令会运行两次吗?我如何修复它

首先,非常感谢

其他信息: 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,我知道Capistrano3中不需要它。无论如何,我都不知道怎么做。

我遇到了同样的问题,意识到我不需要两者兼而有之

role :web

服务器“”

我去掉了role:web,这就去掉了第二次执行。

实际上,我甚至不得不删除服务器定义中的角色:%w{web}。很高兴我能帮上忙。:)两次使用
server
时出现相同问题(在deploy.rb和deploy/production.rb中)
role :web
server '<server>'