我正在使用 craken 在我的 aws 机器实例上运行 cron 进程。我在 Capistrano 中定义了以下自定义任务:
namespace :craken do
desc "Install raketab"
task :install, :roles => :cron do
set :rails_env, "production" unless exists?(:rails_env)
set :env_args, (exists?(:env_args) ? env_args : "app_name=#{application} deploy_path=#{current_path}")
run "cd #{current_path} && rake #{env_args} RAILS_ENV=#{rails_env} craken:install"
end
task :uninstall, :roles => :cron do
set :rails_env, "production" unless exists?(:rails_env)
set :env_args, (exists?(:env_args) ? env_args : "app_name=#{application} deploy_path=#{current_path}")
run "cd #{current_path} && rake #{env_args} RAILS_ENV=#{rails_env} craken:uninstall"
end
end
before "deploy:symlink", "craken:uninstall"
after "deploy:symlink", "craken:install"
问题是之前的 "deploy:symlink", "craken:uninstall" 导致 deploy:cold 在第一次运行时失败,因为 craken raketab 尚未安装。我如何将其配置为仅在它是部署而不是部署时运行:冷?有我可以检查的环境变量吗?
谢谢!