Ответ 1
Capistrano v3 - это нечто вроде обертки вокруг Rake, поэтому вам нужно понять, что на самом деле происходит то, что задача production
запускается сначала, а затем задача deploy
.
Если вы немного отлаживаете его, вы обнаружите, что deploy.rb
не загружается, когда вы не вводите этап. Это связано с тем, что этапная задача заключается в загрузке deploy.rb
: в lib/setup.rb
задание задается для каждого этапа. При запуске задача этапа устанавливает :stage
, загружает значения по умолчанию capistrano и затем загружает ваш файл deploy.rb
.
Таким образом, простой трюк заключается в том, чтобы сказать Capistrano вызывать сценную задачу каждый раз, когда вы запускаете cap
, добавляя это в конец своего Capfile
( не ваш deploy.rb
)
Rake::Task[:production].invoke
или, используя метод invoke
от Capistrano DSL:
invoke :production
Это может иметь некоторые непреднамеренные последствия, если вы действительно используете несколько этапов, но если вы используете только этап production
, он должен работать нормально.
Другим простым решением может быть простой псевдоним оболочки, такой как alias cap='cap production'
, но он может не сработать, если у вас несколько проектов с разными именами сцен.