delayed_job能夠講比較耗時的任務在後臺運行,好比發送郵件,下載,修改圖片等等 git
github上有介紹,咱們這裏使用collectiveidea的 github
https://github.com/collectiveidea/delayed_job 數據庫
並且他支持咱們多種數據庫做爲隊列。ActiveRecord ,DataMapper,IronMQ,Mongoid,MongoMapper,MongoMapper ,Redis
這裏直接試用ActiveRecord。 ruby
直接在Gemfile裏添加
app
gem 'delayed_job_active_record'而後bundle install就好。
delayed_job須要一個表來看成隊列,直接運行下面的代碼就能建立好 ide
rails generate delayed_job:active_record rake db:migrate
可是有不少項目有不少數據庫的,並且是不用database.yml的,還有的狀況就是須要將這個隊列另外單獨使用一個數據庫。這種狀況只須要先在須要的數據庫裏建立所需的表,而後講相關配置寫入一個Helper中,使用delayed_job前加入下面這一行代碼便可。 idea
ActiveRecord::Base.establish_connection ModelHelper.get_delayed_job_db_conf
這樣生成的隊列就會保存在相應的表中 spa
對應的 在config/initializers/delayed_job_config.rb中也須要加入如下代碼 code
ActiveRecord::Base.establish_connection ModelHelper.get_delayed_job_db_conf這樣啓動work後纔會找到相應的隊列
這樣就能夠正常使用delayed_job了,具體的方法看github吧
隊列