2

カピストラーノで展開するときに、いつでも / capistrano を使用して cron_tab を更新しています。最近まで、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)
4

1 に答える 1

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

gemの依存関係を更新するときはいつでもお勧めします:)

(ソース: https://github.com/javan/whenever/issues/302#issuecomment-14962350 )

于 2013-03-15T14:09:01.600 に答える