rails中使用delayed_job在后台异步执行程序时使用另外的数据库当队列

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吧
队列