Ruby on rails javan不使用Capistrano deploy编写crontab

Ruby on rails javan不使用Capistrano deploy编写crontab,ruby-on-rails,cron,capistrano,whenever-capistrano,Ruby On Rails,Cron,Capistrano,Whenever Capistrano,我一直在尝试在ec2实例上运行,该实例是使用ec2 on rails创建的 当我使用Capistrano部署时,它表明crontab已经被写入,但是当我登录到服务器并运行crontab-l时,它似乎没有被更改 如果我进入release文件夹并在任何时候手动运行--write crontab,然后运行crontab-l--它会得到正确的更新 你知道这是什么原因吗 Capistrano没有指出任何错误,因此不确定如何调试,尝试了10亿次排列和组合,但没有任何更改 名称空间:deploydo name

我一直在尝试在ec2实例上运行,该实例是使用ec2 on rails创建的

当我使用Capistrano部署时,它表明crontab已经被写入,但是当我登录到服务器并运行crontab-l时,它似乎没有被更改

如果我进入release文件夹并在任何时候手动运行--write crontab,然后运行crontab-l--它会得到正确的更新

你知道这是什么原因吗

Capistrano没有指出任何错误,因此不确定如何调试,尝试了10亿次排列和组合,但没有任何更改

名称空间:deploydo namespace :deploy do desc "write the crontab file" task :write_crontab, :roles => [:db_admin] do run "cd #{release_path} && sudo -u root whenever --write-crontab #{application}" end end desc“写入crontab文件” 任务:write_crontab,:roles=>[:db_admin]do 运行“cd#{release_path}&&sudo-u root每当--write crontab#{application}” 结束 结束
或者,在where中显然还有一个-user选项可以帮助您实现这一点。

您应该能够在cap部署文件中只需要where-capistrano命令,如下所示:

要求“无论何时/capistrano”

如果您使用bundler,还需要添加以下内容:


set:whenwhere_命令,'bundle exec whenwhere'

这与OP无关,但根据这一点,Capistrano 2.11.1需要whenwhere 0.7.3来解决此问题。

请确认,您是否检查了正确用户的cron作业?例如,您以root用户身份登录,但您的应用程序正在以deploy身份运行。例如,通过运行
sudo crontab-l-u deploy
,检查此项。感谢@SSidelnikov提供的提示!五年前我问过这个问题!也许我应该指出,我自己的答案在当时是足够的,在当时是新的堆栈溢出。