`
iseesea
  • 浏览: 46312 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

rails3使用whenever定时执行一些task(其实是linux的cron job);

阅读更多
因为有个需求,“用户每天都要完成一个log的记录,如果没有完成的要通过邮件提醒;”
所以考虑使用whenever每天固定在23点检查,用户是否有做相应的操作。
whenever 安装:
gem 'whenever', :require => false #在Gamfile里面添加


然后就是进入程序的根目录底下运行:
wheneverize

这样whenever会给你初始化创建config/schedual.rb文件;
然后在该文件里面添加一下内容:
set :output, "#{path}/log/whenever.log" #设置日志输出文件
job_type :rake_no_env, "cd :path && rake :task :output" #自定义任务

every 1.day,:at=>'10:45am' do
  rake_no_env "check_daylog"    #每天早上:10:45运行 底下命令
end

这样会产生一下的linux计划任务:
引用

45 10 * * * /bin/bash -l -c 'cd /home/user/rails/app/root && rake check_daylog >> /home/user/rails/app/root/log/whenever.log 2>&1'


[color=red]
当然了,你也可以利用Rails的runner去执行一个静态方法,而不是使用rake;

可以使用命令
every 1.day,:at=>'10:45am' do
  runner "DayLog.check_daylog"    #执行DayLog的静态方法或者modual:check_daylog;
end
[/color]
可以在程序根目录底下用
引用
whenever

命令查看任务,但是需要运行
引用
whenever -i

来更新添加到系统中;
可以使用linux的
引用

crontab -l

命令查看当前系统的所有cron job。
然后在Rails/app/root/lib/tasks目录底下添加文件用来写task;
require 'fileutils'
require 'open3'
#以上2个尚未验证是否需要require进来。在rails里面估计不需要;
desc "check daylog"
task :check_daylog do
  check_file = "#{Rails.root}/app/mailers/check_daylog.rb"
  FileUtils.cd(Rails.root) do
    Open3.popen3("rails c #{Rails.env} < #{check_file} ") do |stdin, stdout, stderr|
      puts stdout.read
      puts stderr.read
#在控制台输出运行信息;
      end
  end
end


#{Rails.root}/app/mailers/check_daylog.rb文件内容将会被导入到rails的控制台太里面执行;

whenever -c [file]
用来取消任务;





2
2
分享到:
评论

相关推荐

    Rails3 使用rake启动后台任务

    以下是一些关于如何在 Rails3 中使用 rake 启动后台任务的知识点: 1. **Rakefile**: 每个 Rails 项目都有一个 Rakefile 文件,这是 Rake 执行任务的入口点。在这个文件中,你可以定义自定义的任务。 2. **Task ...

    计划任务Cron表达式生成

    `whenever`是Rails框架中用于简化Cron表达式创建的gem,它允许开发者用更易读的语法来定义计划任务。例如: ```ruby every 2.days, at: '3:00 am' do runner "MyModel.some_process" end ``` 在这个例子中,`...

    Ruby on Rails安装包全集(Linux)

    在Linux环境下安装Ruby on Rails需要一系列的依赖包和步骤,本资源包提供了所需的所有组件,帮助用户在Linux系统上顺利构建RoR开发环境。 1. **readline-5.1.tar.gz**: 这是Readline库的源代码包,它提供了一种交互...

    Rails3常用命令行命令

    以上就是Rails3的一些常用命令行操作。熟练掌握这些命令,将极大地提高你的开发效率,使你在构建Ruby on Rails应用时更加得心应手。记住,实践是学习的最佳途径,尝试在实际项目中运用这些命令,你将更加熟悉Rails的...

    centOS Rails3环境搭建

    ### CentOS环境下Rails 3开发环境搭建详解 #### 一、准备工作与环境配置 在开始部署Rails 3开发环境之前,我们需要确保系统上已经安装了一些基本的软件包和工具。这一步骤对于后续的Ruby和Rails安装至关重要。 ##...

    Rails 3 in Action

    《Rails 3 in Action》是2011年由Ryan Bigg撰写的一本关于Ruby on Rails框架的权威指南,专门针对当时最新的Rails 3.1版本进行了深入解析。这本书旨在帮助开发者充分利用Rails 3.1的强大功能,提升Web应用开发的效率...

    终于知道怎么把rails Web程序打包成可执行文件了

    这里,我们主要探讨如何将Rails应用转化为独立的可执行文件,结合提供的标题和描述,我们可以推测这个过程涉及到的主要技术包括源码打包和使用某种工具进行封装。 首先,Rails应用通常是基于Ruby语言,依赖于Ruby...

    linux-在Ubuntu服务器上安装Rails生产环境的脚本

    3. **数据库设置**:Rails应用通常需要与数据库系统(如MySQL或PostgreSQL)集成。例如,对于PostgreSQL,需要先安装数据库软件及其开发库: ```bash sudo apt-get install -y postgresql postgresql-contrib ...

    Rails 101 入门电子书

    - **作品**: 除了《Rails 101 入门电子书》外,xdite还编写了其他几本书籍,如《Maintainable Rails View》、《Lean SaaS》以及《Land Dream Rails Job》等。 - **特色**: 这本书是中文世界唯一一本基于Rails 4.0.0+...

    ruby on rails 3 tutorial.pdf

    《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...

    ruby中执行周期性任务(定时任务)的3种方法

    Whenever是一个基于Linux的cron服务的gem,它将Ruby代码转换为cron脚本,从而让cron负责执行周期性任务。在Windows平台上,由于缺少cron服务,whenever无法直接使用。以下是如何使用whenever的步骤: - 首先,通过...

    rails中使用javascript日期控件

    这篇博文“rails中使用javascript日期控件”探讨了如何在Rails应用中集成和使用JavaScript日期选择器,以实现更高效、友好的前端交互。 首先,我们需要了解JavaScript日期控件的基本概念。JavaScript是一种在客户端...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    rails3-railsconf2010

    标题与描述均提到了"rails3-railsconf2010",这表明内容主要聚焦于Rails 3在2010年的RailsConf会议上的关键更新与特性。Rails(Ruby on Rails)是一种用Ruby语言编写的开源全栈web应用框架,以模型-视图-控制器(MVC...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    rails3 api chm格式

    2. "Rails3 api.chm":这是Rails 3的主要API文档,它应该包含了关于控制器、模型、视图、路由、数据库交互、辅助方法、插件、测试等所有关键部分的详细信息。开发者可以通过搜索、索引等功能快速查找所需的信息。 ...

    ruby on rails轻松使用

    14. **数据库迁移(Database Migrations)**: 当数据库结构需要变化时,使用`rails generate migration`创建迁移文件,然后通过`rails db:migrate`来执行迁移。 15. **Rails Console**: 交互式的命令行工具,可以...

Global site tag (gtag.js) - Google Analytics