Capistrano 3, using upload! in a task in lib/capistrano/tasks
capistrano3, ruby, ruby-on-rails
Solution
I had the same problem, I created my own recipe in a separate file which I loaded in deploy but couldn't get upload! to work.
What fixed it for me was adding a role filter inside the task making my final recipe look something like this:
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"
I hope that helps!
Problem
I'm using Capistrano 3 and I want to create my own task. So I created a file my_new_thing.rake in lib/capistrano/tasks and I can see the task when I run cap -T. But... some of the methods aren't available. When I try to use upload! I get ``` cap aborted! NoMethodError: undefined method `upload!' for main:Object ``` But if I move the same task into config/deploy.rb then then upload! method is available. So what's going on? How do I create new Capistrano tasks put them in separate file and have them work?