Ruby on rails 3 Capistrano 3将每个命令运行两次(新安装)-配置问题
我刚刚第一次完成了capistrano的安装。大部分内容都留给默认设置,我配置了我的服务器、它的身份验证、远程文件夹以及对git存储库的访问 我使用capistrano将php代码部署到服务器上 cap staging deploy和cap production deploy功能,但它们会将每个命令运行两次。当这些任务在服务器上执行得太快时,有时会导致问题,返回错误代码,从而停止部署过程 运行cap staging deploy时的输出示例 除了我自己定义的任务(在我的deploy.rb中,我定义了一个:set_remote_server任务,该任务在包含服务器信息的文件中移动)之外,它对每个任务都执行相同的操作 我很确定我在最初的配置中遗漏了一些东西 这是我的capfile,仍为默认设置: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中,我定
# 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>'