簡體   English   中英

Capistrano 3,使用上傳! 在lib / capistrano / tasks中的任務中

[英]Capistrano 3, using upload! in a task in lib/capistrano/tasks

我正在使用Capistrano 3,我想創建自己的任務。 所以我在lib / capistrano / tasks中創建了一個文件my_new_thing.rake,當我運行cap -T時我可以看到任務。 但是......有些方法不可用。 當我嘗試使用上傳! 我明白了

cap aborted!
NoMethodError: undefined method `upload!' for main:Object

但是,如果我將相同的任務移動到config / deploy.rb然后上傳! 方法可用。

發生什么了? 如何創建新的Capistrano任務將它們放在單獨的文件中並讓它們工作?

我有同樣的問題,我在一個單獨的文件中創建了我自己的食譜,我在部署中加載但無法上傳! 上班。

為我修復的是在任務中添加一個角色過濾器,使我的最終配方看起來像這樣:

 namespace :figaro do      
   desc "Transfer Figaro's application.yml to shared/config"
   task :upload do
     on roles(:all) do
       upload! "config/application.yml", "#{shared_path}/config/application.yml"
     end
   end
 end
 before "deploy:check", "figaro:upload"

我希望有所幫助!

如果要將它們保存在單獨的文件中,可以為capistrano配方創建文件夾config/recipes

使用.rb擴展名,因為這不是常規的rake任務。

config/deploy.rb添加此行

load File.expand_path('../recipes/my_new_thing.rb', __FILE__)

如果您想使用rake任務,那么您將需要在部署文件中創建一個任務,該任務調用那些不那么聰明的rake任務。 因此@Sharagoz建議最好的方法是創建自己的配方文件並將其包括在內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM