1

我使用RVM軌,Capistrano的軌道跳過任務`部署:更新」,因爲它以前被調用

使用Capistrano的deplying當我得到以下錯誤:

Skipping task `deploy:updating'. 
Capistrano tasks may only be invoked once. Since task `deploy:updating' was previously invoked, invoke("deploy:updating") at /home/ziaulrehman/.rvm/gems/ruby-2.3.4/gems/capistrano-3.8.2/lib/capistrano/tasks/framework.rake:64 will be skipped. 
If you really meant to run this task again, first call Rake::Task["deploy:updating"].reenable 
THIS BEHAVIOR MAY CHANGE IN A FUTURE VERSION OF CAPISTRANO. Please join the conversation here if this affects you. 
https://github.com/capistrano/capistrano/issues/1686 

我capfile有:

require 'capistrano/setup' 
require 'capistrano/deploy' 
require 'capistrano/bundler' 
require 'capistrano/rails' 
require 'rvm1/capistrano3' 
require 'capistrano/puma' 
require 'capistrano/sidekiq' 
install_plugin Capistrano::Puma 
install_plugin Capistrano::Puma::Nginx 

require "capistrano/scm/git" 
install_plugin Capistrano::SCM::Git 

require "capistrano/rails/assets" 
# there are no customm tasks 
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r } 

而且我deploy.rb看起來像:

# config valid only for current version of Capistrano 
lock "3.8.2" 

set :application,  "webapp" 
set :deploy_via,  :remote_cache 
set :keep_releases, 5 
set :repo_url,  "[email protected]:org/webapp.git" 

append :linked_files, 'config/database.yml', 'config/secrets.yml', '.env.generic' 
append :linked_dirs, 'vendor/bundle', 'public/uploads' 

# Default deploy_to directory is /var/www/my_app_name 
set :deploy_to,  "/home/deployer/www/webapp" 

set :rvm1_ruby_version, 'ruby-2.3.4' 
# set :rvm_type, :user 
# set :default_env,  { rvm_bin_path: '~/.rvm/bin' } 
# fetch(:default_env).merge!(rvm_path: '~/.rvm/bin') 
set :rvm1_map_bins, -> { fetch(:rvm_map_bins).to_a.concat(%w{rake gem bundle ruby foreman}).uniq } 

before 'deploy', 'rvm1:install:ruby' 

set :sidekiq_processes => 2 
set :keep_assets, 2 
set :sidekiq_config => '#{release_path}/config/sidekiq.yml' 

set :pty, true 

我絕對沒有自定義任務什麼的,這些都是我使用所有的寶石,我懷疑某種寶石中的衝突。

如果有人能指出確切位置正在創建這個問題,我怎麼能解決這個問題,將是巨大的。另外,我想知道這個問題的含義。一切似乎現在正常工作。

回答

1

這是造成rvm1-capistrano3寶石的問題。我剛剛看了一下在GitHub上創業板的源代碼,它是做奇怪的事情像註冊掛鉤這樣的:

before :ruby, "deploy:updating" 

這是沒有意義的我。這意味着,如果你在部署(由README建議)的開頭援引rvm1:install:ruby,那麼它會觸發deploy:updating之前,你的部署,甚至還開始。通常應該在部署的處觸發。這個寶石的工作原理是令人驚訝的。

Skipping task警告是非常重要的。你的部署可能會奏效,但它仍然令人擔憂。我建議找到rvm1-capistrano3寶石的替代品。

+0

三江源很爲你分析,這種寶石是一個非常標準之一。我會在gem repo上爲這個問題打開一個問題,並將這個答案鏈接到那裏。這是積極的開發和使用,所以它會很奇怪,如果它可以爲所有其他用戶的寶石,只有我有問題。但是,就你的分析而言,它仍然是一個問題。謝謝 –

相關問題