[英]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.