rails中是如何实现定时任务的之sidetip

环境:ubuntu14.4,ruby2.1.5, rails4.2

sidetip 依赖于sidekiq,所以在Gemfile里要添加sidekiq。

一、新一个rais项目:rails new schedule_job --skip-bundle

进入项目文件夹: cd schedule_job

  打开Gemfile文件:vim Gemfile

  把source ‘https://rubygems.org‘改为source ‘https://ruby.taobao.org‘。

  在文件里加入:gem ‘sidekiq‘,gem ‘sidetip‘

  然后运行:bundle install

  安装redis-server: sudo apt-get install redis-server

  redis-cli进入redis,运行ping

  PONG说明安装成功。

二、新测试文件:

  在app/jobs文件夹下产生文件,新建定时任务类:MySchedule

  vim my_schedule.rb,修改为:

  class MySchedule
    include Sidekiq::Worker
    include Sidetiq::Schedulable

  recurrence { daily }

  def perform
      puts "sidetip 测试"
    end
  end

   保存退出。

  在config/application.rb里面添加: config.active_job.queue_adapter = :sidekiq

三、运行sidekiq,会出现如下图:

  这个是到午夜执行的任务。

四、测试:

  修改my_schedule.rb文件为:

  class MySchedule
    include Sidekiq::Worker
    include Sidetiq::Schedulable

  recurrence do
      minutely(1)
    end

   def perform
      puts "sidetip 测试"
    end
  end

  改为每一分钟执行一次。

  执行sidekiq命令,会出现如图:

  运行成功。

时间: 2024-10-19 10:30:53

rails中是如何实现定时任务的之sidetip的相关文章

RailsCast26 Hackers Love Mass Assignment rails中按params创建、更新model时存在的安全隐患

Mass assignment是rails中常用的将表单数据存储起来的一种方式.不幸的是,它的简洁性成了黑客攻击的目标.下面将解释为什么及如何解决. 上述表单为一个简单的注册表单.当用户填入name,点击提交时,一个新用户被创建.用户模型被如下定义: ruby create_table :users do |t| t.string :name t.boolean :admin, :default => false, :null => false end 当用户点击提交时,如下的action被执

Rails中如何避免N+1问题

N+1问题 N+1问题是数据库访问中最常见的一个性能问题,首先介绍一下什么是N+1问题: 举个例子,我们数据库中有两张表,一个是Customers,一个是Orders.Orders中含有一个外键customer_id,指向了Customers的主键id. 想要得到所有Customer以及其分别对应的Order,一种写法是 SELECT * FROM Customers; 对于每一个Customer: SELECT * FROM Orders WHERE Orders.customer_id =

理解ruby on rails中的ActiveRecord::Relation

ActiveRecord::Relation是rails3中添加的.rails2中的finders, named_scope, with_scope 等用法,在rails3统一为一种Relation用法. 以下是返回ActiveRecord::Relation的方法: bind create_with distinct eager_load extending from group having includes joins limit lock none offset order preloa

spring中quatz的多定时任务配置图文详解

近来公司让用quatz框架做定时功能,而且还是执行多定时任务,真是苦恼. 虽然从网上搜了很多资料,但是写法上不太尽如人意,最后还是请教了螃蟹大神,给的配置建议就是简单啊,现在拿来分享下: 这里我们需要的有两部分,一个是java中的处理类,一个是quatz的配置文件,截图如下applicationContext_quartz.xmlquatz的配置文件地址地址:http://www.itxxz.com/a/kuangjia/kuangjiashili/2014/0602/10.html java中

rails 中加载自定义文件

rails默认生成lib文件夹,但是没有默认加载lib中的文件,可以在config/application.rb中配置如下代码,加载lib文件夹里面定义的module或者是class: config.autoload_paths += %W(#{config.root}/lib) 当然这种方法不只是可以加载lib文件,还可以加载其他自定义的文件夹. 注意的是这些自定义的文件的module或者class名一定要和文件名一直,比如class名为AppStore,那文件名一定要是app_store.r

rails中params[:id]与params["id"]分析

写这个帖子的缘由是因为在页面参数传到rails的controller时用params[:]和params[""]都可以取到值: ? 1 2 3 4 5 6 [1] pry(#<BooksController>)> params => {"action"=>"show", "controller"=>"books", "id"=>"382

rails中accepts_nested_attributes_for应用

Model: class Blog < ActiveRecord::Base has_many :strip_rules accepts_nested_attributes_for :strip_rules, allow_destroy: true end class StripRule < ActiveRecord::Base belongs_to :blog attr_accessible :rule, :blog_id end 要实现在新建和修改blog时可以添加/删除任意多个strip

rails 中model之间的 association (:inverse_of)

class Customer < ActiveRecord::Base has_many :orders end class Order < ActiveRecord::Base belongs_to :customer end 如上代码两个model在做如下查询的时候: c = Customer.first o = c.orders.first c.first_name == o.customer.first_name # true c.first_name = "other na

rails中一个窗体多个模型——fields_for

借助field_for可以生成表单来处理两个或更多模型对象的数据 先看一个官方的例子,一个表单中有person和permission两个模型,其中每个person包含一个permission <%= form_for(@person) do |person_form| %> First name: <%= person_form.text_field :first_name %> Last name: <%= person_form.text_field :last_name