railscasts有个视频,使用delayed_job去发送邮件(http://railscasts.com/episodes/171-delayed-job)
但是呢,rails3的发送邮件的api发生了些许变化。(详情请看:http://lindsaar.net/2010/1/26/new-actionmailer-api-in-rails-3)
发送的方法上也要做些许的修改。这里以我的代码作为示例,做个示范。
这里的UserMailer大概代码:
class UserMailer < ActionMailer::Base
default :from => "admin@example.com"
def registration_confirmation(user)
@user = user
mail(:to => "#{user.username} <#{user.email}>", :subject => "注册确认")
end
end
这个是rails3的ActionMailer,很赞
有了上面的代码,Controller中直接调用
UserMailer.registration_confirmation(@user).deliver
就可以发送邮件了
def create
@user = User.new(params[:user])
if @user.save
UserMailer.registration_confirmation(@user).deliver
flash[:notice] = "谢谢您的注册,一封注册确认邮件即将发往邮箱#{@user.email},请注意查收!"
redirect_to '/login'
else
render :action => 'new'
end
end
但是,现在的代码是直接进行发送的,这使得用户在操作的时候,会卡一下,如果放到后台去发送就不会有这个问题。
在rails的lib目录底下的mailing_job.rb文件内容,做些许的变化
class MailingJob < Struct.new(:notifier_method,:user_id)
def perform
user = User.find(user_id)
UserMailer.send(notifier_method, user).deliver
end
end
到这里就基本上搞定了,把UserController里的直接发送的代码换成:
Delayed::Job.enqueue MailingJob.new(:registration_confirmation, @user.id)
delayed_job记得上最新版,gemfile里直接写gem "delayed_job", "2.1.0.pre"就可以了
分享到:
相关推荐
安装将 delay_job_celluloid 添加到您的 gem 文件中 gem 'delayed_job_celluloid'运行捆绑安装 bundle install delayed_job_celluloid要将启动脚本添加到您的脚本目录,请运行生成器 rails generate delayed_job_...
延迟的工作Mongoid后端 要求 Mongoid 5或更高版本。 对于Mongoid 3和4,请使用此gem的2.x版本。 安装 将宝石添加到您的Gemfile中: gem 'delayed_job_mongoid'... rails generate delayed_job 就是这样。 正常使用 。
Delayed::Job(或 DJ)封装了在后台异步执行较长任务的常见模式。 它是直接从 Shopify 中提取的,其中工作表负责许多核心任务。 这些任务包括: 发送大量时事通讯 图像大小调整 http下载 更新智能收藏 在产品更改...
rails g delayed_job:active_recordrake db:migrate锁定作业时出现问题您可以尝试使用旧版锁定代码。 通常速度较慢,但对某些人来说效果更好。 Delayed::Backend::ActiveRecord.configuration.reserve_sql_...
Rails_3_Cheat_Sheets.pdf
RestFul_Rails_Dev_v_0.1 RestFul_Rails_Dev_v_0.1
Rails_Recipes_with_Source_Code
使用创建内容的简单方法。 预习 示范 要求 依存关系 MiniMagick 支持的ORM ActiveRecord 支持的资产插件 CarrierWave 安装 使用rails <5和TurboLink <5进行测试 将此行添加到您的应用程序的Gemfile中: ...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
应用Rails进行REST 开发 ,翻译自《RESTful Rails Development》
Web开发敏捷之道应用Rails进行敏捷Web开发_中文书_第4版
Agile Web Development with Rails 1-14节_ppt(老师发的修正版)
编写该gem的目的是使用activerecord与rails 3和4应用程序一起使用。 一些功能: 轻松查看排队,工作,挂起和失败的作业。 将任何单个作业或所有待处理的作业放入队列,以立即运行。 删除失败的作业或轻松删除所有...
awesome-rails-gem-zh_CN, Rails 常用 Gem 列表 - Awesome Rails Gem 中文版
安装要启用rails_admin_history_rollback ,请将以下内容添加到您的Gemfile确保将其添加到rails_admin之后: gem 'rails_admin'gem 'rails_admin_history_rollback' 不用说,此插件还需要paper_trail gem。...
$ rails generate rails_admin_image_manager:install 将上传文件路径添加到您的.gitignore文件中 /public/rails_admin_image_manager 运行迁移 $ rails db:migrate SCOPE=rails_admin_image_manager 安装图像管理...
自述文件版本和设置$ ruby -vruby 2.6.1p33 (2019-01-30 revision 66950) [x86_64-darwin18]$ rails -vRails 5.2.3使用我创建的特殊模板来加快开发过程。 # ~/rtfb_template.rbgroup :development , :test do gem '...
Windows7_Cygwin_Git_RVM_Ruby1.9.3_Rails3_MongoD B_Nginx_Unicorn_Rspec_Guard_Spork(2-Ruby on Rails3 安装配置
建立添加到Gemfile:gem'delayed_job_progress gem 'delayed_job_progress' bundle install rails g delayed_job:progress rake db:migrate配置和用法考虑一下: class User < ActiveRecord xss=removed> :record , ...
Rails Admin 插件成为主应用程序中的设计用户 概述 在对用户问题进行故障排除时,从用户的角度来看是非常有用的。 该插件向 Rails Admin 仪表板添加了一个自定义操作,以便以用户身份从您的应用程序登录,而无需...