redmine自動發送郵件

大家好:

      R隊最近接到一個任務,要每個月定時給指定的用戶發送一封郵件,乘機研究了下redmine的定時任務,這裏就給小夥伴們分享一下。

       R隊用的是rufus-scheduler定時任務。rufus-scheduler一共有五種類型定時任務:in, at, every, interval and cron,具體怎麼用且聽R隊慢慢道來。。。

         

一. in、at類型定時任務

           

  1. in:設置在一段時間後執行
  2.   require 'rufus-scheduler'
      scheduler = Rufus::Scheduler.new
      scheduler.at ''2018/01/25' do
        puts "2018年1月25日執行定時任務"
      end

  3. at:在某一時間執行
  4.   require 'rufus-scheduler'
      scheduler = Rufus::Scheduler.new
      scheduler.at ''2018/01/25' do
        puts "2018年1月25日執行定時任務"
      end


二. every、interval、cron類型定時任務

          

  1. every和interval比較相似,都是設置在固定的間隔時間內重複執行,區別是every計算兩次觸發間隔時間,而interval計算的則是本次觸發結束到下次觸發開始的時間。
    every類型:

      require 'rufus-scheduler'
      scheduler.every '3h' do
        puts "每隔3小時執行一次"
      end

    interval類型:

      require 'rufus-scheduler'
      scheduler.interval '2h' do
        puts "每隔2小時執行一次"
      end

  2. corn:corn定時任務比起every和interval更加靈活,可以更加精確的設置定時器的觸發時機。

      require 'rufus-scheduler'
      scheduler.cron '00 09 * * *' do
        puts "每天上午9點執行一次"
      end


三. 定時任務開發實例

           使用corn定時任務調用發送郵件的方法實現每月22號自動發送文檔提醒郵件功能,具體實現代碼如下:

require 'rubygems'
  require 'rufus-scheduler'
  require 'Mailer'
  scheduler = Rufus::Scheduler.new
#設置定時任務爲每月22號10點發送
  scheduler.cron '00 10 22 * *' do 
#執行定時任務時調用Mailer中的deliver_mail方法
    Mailer.deliver_mail
  end





發佈了32 篇原創文章 · 獲贊 28 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章