Всякий раз, когда /capistrano `method_missing_with_variables': неопределенный метод`role_names_for_host'
Я использую всякий раз, когда / capistrano, чтобы обновить мой cron_tab при развертывании с помощью capistrano, он работал прекрасно, пока недавно мои развертывания не начали давать сбой при обновлении cron_tab.
.rvm/gems/ruby-1.9.3-p362-turbo@psg-web/gems/capistrano-2.8.0/lib/capistrano/configuration/variables.rb:122:in `method_missing_with_variables': undefined method `role_names_for_host' for #<Capistrano::Configuration:0x000000018e6a10> (NoMethodError)
Я устанавливаю * role_names_for_host *
set_default(:whenever_roles, [:workers])
и мои задачи выглядят так
namespace :whenever do
desc "Stop whenever"
task :stop , roles: [:workers] do
clear_crontab
end
desc "Start whenever"
task :start , roles: [:workers] do
update_crontab
end
desc "Restart whenever"
task :restart , roles: [:workers] do
update_crontab
end
after 'deploy:symlink', 'whenever:update_crontab'
%w[start stop restart].each do |command|
after "deploy:#{command}", "whenever:#{command}"
end
end
Любые идеи о том, что я могу делать неправильно?
Gem версии
- Капистрано (2.8.0)
- всякий раз (0.8.2)
1 ответ
Метод отсутствует введен в капистрано после 2.9.0.
Патч: Вы можете добавить это вверху файла Capfile или deploy.rb:
require 'capistrano/server_definition'
require 'capistrano/role'
class Capistrano::Configuration
def role_names_for_host(host)
roles.map {|role_name, role| role_name if role.include?(host) }.compact || []
end
end
Я бы порекомендовал каждый раз, когда обновлять его драгоценные зависимости:)
(источник: https://github.com/javan/whenever/issues/302)