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_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
14. **邮件发送(Action Mailer)**:Rails内置了Action Mailer用于发送电子邮件,书中可能会涉及邮件模板、配置和测试。 通过阅读《Rails Recipes with Source Code》,开发者可以深入理解Rails的各个层面,并学会...
使用创建内容的简单方法。 预习 示范 要求 依存关系 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之前必须...
3. **连接逻辑**:在`app/assets/javascripts/cable.js`中,Rails自动生成的ActionCable初始化代码需要根据实际需求进行定制,以建立WebSocket连接并订阅所需的通道。 4. **前端交互**:使用JavaScript(通常为...
在Rails应用中使用`profanity_filter`的步骤大致如下: 1. **安装 gem**:首先,在你的Rails项目的`Gemfile`中添加`gem 'profanity_filter'`,然后运行`bundle install`命令来安装。 2. **配置**:在你的Rails应用...
3. **数据缓存**:使用低级缓存`Rails.cache`存储查询结果,避免重复计算。 三、代码优化 1. **避免在循环中进行数据库查询**:将查询移到循环之外,减少不必要的数据库交互。 2. **减少视图复杂性**:保持视图...
Git作为版本控制系统,对于团队协作开发项目尤为重要,学习它的使用方法能够帮助开发者更好地管理代码的版本。而在Rails开发中,合适的编辑器可以提高代码编写和管理的效率,Linux命令行则对于部署和维护开发环境...
Agile Web Development with Rails 1-14节_ppt(老师发的修正版)
以上只是Awesome Rails Gem列表中的一部分,实际列表还包含了更多用于数据库迁移、日志记录、邮件发送、国际化、安全、缓存、版本控制等各个方面的Gem。通过这个列表,开发者可以快速找到适合自己项目的Gem,极大地...
编写该gem的目的是使用activerecord与rails 3和4应用程序一起使用。 一些功能: 轻松查看排队,工作,挂起和失败的作业。 将任何单个作业或所有待处理的作业放入队列,以立即运行。 删除失败的作业或轻松删除所有...
安装要启用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 '...
建立添加到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 , ...