Task & Rexcel
最终生成的报表需要excel格式,我用了Rexcel这个插件,先写下一个task(/lib/task/task.rake)
namespace :reports do
desc "my report"
task :my_report => :environment do
arr = ActiveRecord::Base.connection.execute("#{your sql}").to_a
workbook = Rexcel::Workbook.new
worksheet = workbook.add_worksheet("reports")
worksheet.add_line(["col1", "col2", "col3"])
worksheet.add_lines(arr)
Rails.logger.info("===================begin to write excel")
File.open("#{RAILS_ROOT}/public/uploads/reports/#{month}月报表.xls", "w") do |f|
f.write(workbook.build)
end
end
end
Crontab & whenever
cron是unix的一个系统工具,用来在后台执行一些定时任务,crontab就是定义这些定时任务的文件
crontab commands
-
crontab -e
Edit your crontab file, or create one if it doesn’t already exist.
-
crontab -l
Display your crontab file
-
crontab -r
Remove your crontab file
whenever
whenever是一个用来生成可读性更好的crontab的gem
在config/schedule.rb
中写完任务
# 每个月1号凌晨4点执行任务
every '0 4 1 * *' do
rake "reports:my_report"
end
在控制台直接执行whenver,得到原生的crontab line,放到部署应用的机器上
关于rake task传参
如果想在控制台手动执行task,也许需要传一些参数,写法是这样
desc "模版应用次数统计报表 -- 手动执行,输入月份"
task :my_task_by_params, [:arg1, :arg2] => :environment do |t, args|
puts args.arg1
puts args.arg2
# your code ...
end
控制台执行RAILS_ENV=production rake my_task_by_params[1, 2]
如果用的是zsh的话,这个rake命令可能会出问题,记得用noglob,出处
分享到:
相关推荐
3. **定时任务**: 要定期运行任务,可以结合 cron(Unix/Linux)或 Windows 计划任务。在 Rails 中,可以使用如 Whenever 这样的库来简化这个过程。 4. **Delayed Job (DJ)**: DJ 是一个流行的 Rails 插件,用于...
除了 Sunspot 外,你还可以考虑使用 Crontab 插件来定时更新索引或执行其他定期任务。这在需要定期处理大量数据的情况下非常有用。 **安装 Crontab 插件**: ```bash gem 'whenever', require: false ``` **配置 ...
4. **任务调度**:Sidekiq支持定时任务,Java端也需要有相应的定时任务管理机制,如Quartz或Spring的TaskScheduler,来触发和执行预定的任务。 5. **错误处理和重试策略**:在Java中实现Sidekiq时,需要考虑错误...
2. **多种调度类型**:支持秒级、分钟级、小时级、天级和月级等多种时间间隔的定时任务。同时,还可以定义一次性任务和基于间隔的重复任务。 3. **事件驱动**:rufus-scheduler基于事件驱动模型,当指定的时间点...
2. **索引优化策略**:源码中可能包含批量索引优化的策略,比如定时任务或者在应用空闲时进行。 3. **Solr字段类型与Rails模型的映射**:理解如何将Rails模型的属性转换为Solr理解的字段类型,以及如何设置字段的...
它允许开发者在Rails环境中创建、管理和执行定时任务,以实现自动化的工作流程。 【描述】"my_scheduler" 的核心功能在于,它为Rails开发者提供了一个用户友好的界面,可以方便地定义和配置定时任务。这些任务可以...
7. **时间触发器**:如使用后台任务队列(如Sidekiq或Resque)和定时任务,以在指定时间后自动销毁任务。 8. **加密技术**:为了保护敏感任务信息,可能采用了加密算法对数据进行存储和传输。 9. **RESTful API设计*...
"Cron表达式"是Linux系统中计划任务的核心,而Java社区通过`@Scheduled`注解和Quartz库等方式也引入了类似的概念,使得在Java应用中实现定时任务变得非常方便。 "Cron"这个词来源于北欧神话中的时间之神"Cronus",...
为了高效地管理网络资源、监控数据变化和执行定时任务,许多企业和开发者开始寻找可靠的自动化工具。其中,Huginn以其强大的功能和灵活的配置脱颖而出,成为了一个备受瞩目的解决方案。本文将深入探讨Huginn的核心...
10. **作业调度**:可以设置定时任务,根据预设的时间间隔或特定时间点自动触发作业。 在实际使用中,你可以通过以下步骤开始使用RocketJob: 1. 添加RocketJob到Gemfile并运行`bundle install`安装。 2. 配置...
可能包含的功能有:自动抓取和解析源内容、处理数据(如图片和链接)、实现定时任务调度、提供API接口与其他系统交互、提供自定义配置选项等。开发者可以通过Composer安装并集成到他们的Laravel项目中。 6. **使用...
`whenever` gem提供了一个更友好的界面来配置Cron作业,它将Ruby代码转换为Cron表达式,使得在Rails应用中管理定时任务变得更加简单。在Gemfile中添加`whenever`,然后在`config/schedule.rb`中定义任务: ```...
2. **定时任务**:使用Ruby的`Time`类或第三方库来设定定时任务,确保在预定的时间执行某项操作。 3. **任务调度**:可能需要一个任务队列来管理多个待执行的任务,确保它们按顺序或并行地运行。 4. **数据处理**:...
在部署和运行Kuroko2时,你需要一个支持Ruby的服务器环境,通常会用到Ruby on Rails框架。Kuroko2可能依赖于一些特定的Ruby gem(库),这些gem在项目配置文件(如Gemfile)中列出,并通过Bundler进行管理。在解压`...
这个jar包提供了创建、管理和执行定时任务的基本功能。 2. **依赖库**: Quartz并非一个独立运行的库,它依赖于一些其他的库来完成其功能。例如,`slf4j-api.jar`用于日志记录,`commons-logging.jar`提供通用的...
3. **数据同步**:可以定时或实时同步 Laravel 应用的数据到 Taiga,例如任务状态、问题报告等。 4. **自定义视图**:提供预定义的视图模板,方便展示 Taiga 数据在 Laravel 应用中的集成。 5. **事件监听**:通过 ...
- Ruby简洁的语法非常适合编写自动化脚本,例如定时任务、文件处理等。 - **数据处理脚本** - 使用Ruby编写数据处理脚本,可以快速处理大量数据并执行复杂的逻辑操作。 **3. 数据分析和科学计算** - **数值处理...
它可以创建一次性、每分钟、每小时、每天或者更复杂的定时任务。使用rufus-scheduler,你可以编写像这样的代码来调度任务: ```ruby require 'rufus/scheduler' scheduler = Rufus::Scheduler.new scheduler....
- **定时任务**: `30 3 * * * /mnt/gitlab/backups/git_backup.sh` (每天凌晨3:30执行一次) - **脚本权限**: 设置为755 **1.2 内网环境** - **地址**: `http://xx.xx.xx.xx` - **备份目录**: `/var/opt/gitlab/...
8. **任务调度**:使用 Crontab 语法定义计划任务,简化了定时任务的管理。 9. **错误和日志**:强大的错误处理和日志记录机制,有助于调试和优化代码。 10. **包开发**:Laravel 的组件化设计和 Composer 支持,...