Capistrano не распознает многоступенчатый этап

#deployment #capistrano

#развертывание #capistrano

Вопрос:

Я пытаюсь получить многоступенчатое развертывание capistrano на своих производственных и промежуточных серверах. Вот мой deploy.rb файл (детали scm опущены):

 require 'bundler/capistrano'
require 'whenever/capistrano'

set :application, "myapp"

set :stages, %w{staging, production}
set :default_stage, "staging"
require 'capistrano/ext/multistage'

set :deploy_to, "/webapps/myapp"

set(:domain) { "#{domain}" }
role(:web) { domain }
role(:app) { domain }
role(:db, :primary => true) { domain }

default_run_options[:pty] = true

namespace :one do
    task :foo do
        puts "foo"
    end
end
  

И в config/deploy/production.rb :

 set :domain, "production.com"
set :user, "prod"
  

config/deploy/staging.rb :

 set :domain, "shootsystage.com"
set :user, "stage"
  

Ничего слишком экзотического не происходит (я думаю). Запуск cap production one:foo работает нормально. Но выполнение cap staging one:foo приводит к:

 the task `staging' does not exist
  

Что происходит?

Ответ №1:

Похоже, небольшой фрагмент синтаксиса укусил меня в задницу. Это должно быть:

 set :stages, %w{staging production}
  

Обратите внимание на отсутствие запятых в %w{} . Ffffuuuuuuuuuuuu…

Комментарии:

1. ой — меня тоже укусили этим — раздражает, поскольку, конечно, система сообщает вам, что может найти промежуточную стадию, но никаких признаков производства.