whenever no crontab

# http://stackoverflow.com/questions/7548730/cron-job-not-working-in-whenever-gem
whenever --update-crontab
sudo service cron restart
crontab -l

 

### 设置 Rails 应用中的 Crontab 定时任务 为了在 Rails 应用中利用 crontab 来调度任务,可以采用 `whenever` gem 或者直接编写系统的 cron 作业。以下是两种方法的具体实现: #### 使用 Whenever Gem 方法 安装并配置 `whenever` 可简化创建和管理定时任务的过程。 1. 添加 `gem 'whenever', require: false` 到项目的 `Gemfile` 中,并运行 `bundle install` 命令来安装该 gem[^2]。 2. 运行命令 `bundle exec wheneverize .` 初始化项目结构,在根目录下会生成一个名为 `config/schedule.rb` 文件用于定义计划任务。 3. 编辑 `schedule.rb` 文件以添加所需的周期性操作。例如: ```ruby every 1.day, at: '4:30 am' do runner "MyModel.some_method" end ``` 4. 更新服务器上的 crontab 表格以便反映新的更改。可以通过执行 `bundle exec whenever --update-crontab` 实现这一点。 这种方法的优点在于可以直接通过 Ruby 语法指定要执行的任务逻辑而无需关心底层 shell 脚本细节;然而需要注意的是每当触发器被激活时整个应用程序环境会被重新加载,对于高频率或复杂初始化过程可能带来性能开销。 #### 手动编辑系统级 Crontab 如果希望绕过上述提到的应用程序级别的限制,则可以选择直接修改操作系统层面的 crontab 文件来进行更细粒度控制。 1. 登录到目标机器上拥有适当权限的操作员账户。 2. 输入命令 `crontab -e` 开启当前用户的个人 crontab 配置文件编辑模式。 3. 插入如下格式的一条或多条记录(假设已知路径 `/path/to/rails/script` 是指向待调用脚本的位置): ``` */5 * * * * cd /path/to/your/app && RAILS_ENV=production bundle exec rake my_task >> log/cron.log 2>&1 ``` 4. 保存退出后即刻生效新加入的时间表项。 这种方式虽然更加灵活但也意味着开发者需要自行处理好依赖关系以及确保所有必要的库都处于可用状态。 无论采取哪种方式都应该充分测试所部署的服务端行为以确认预期功能正常运作并且不会引发意外副作用比如数据损坏等问题[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值