From 2f719a12fb8f0191b9cf3329d238fe98b47a0121 Mon Sep 17 00:00:00 2001 From: Fernando Espinosa Date: Thu, 14 Apr 2011 13:23:57 +0200 Subject: [PATCH] Adds resque gem and first mailer jobs --- Gemfile | 1 + Gemfile.lock | 15 +++++++++++++ Rakefile | 1 + app/controllers/invitations_controller.rb | 2 +- .../superadmin/users_controller.rb | 2 +- app/mailers/user_mailer.rb | 6 ++++- config/initializers/load_resque.rb | 6 +++++ lib/resque/user_mailer_jobs.rb | 22 +++++++++++++++++++ script/resque | 2 ++ 9 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 config/initializers/load_resque.rb create mode 100644 lib/resque/user_mailer_jobs.rb create mode 100755 script/resque diff --git a/Gemfile b/Gemfile index 5e6b31cceb..399c6f17ea 100644 --- a/Gemfile +++ b/Gemfile @@ -24,6 +24,7 @@ gem "google-spreadsheet-ruby", :require => "google_spreadsheet" gem "aws-ses", "0.4.1", :require => "aws/ses" gem "rubyzip", :require => "zip/zip" gem "redis" +gem "resque" group :development do gem "capistrano" diff --git a/Gemfile.lock b/Gemfile.lock index e9e45fcecf..c1cfd0f921 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -104,6 +104,7 @@ GEM highline (1.6.1) htmlentities (4.3.0) i18n (0.5.0) + json (1.4.6) json_pure (1.5.1) launchy (0.4.0) configuration (>= 0.0.5) @@ -160,6 +161,13 @@ GEM rake (0.8.7) rdoc (3.5.3) redis (2.2.0) + redis-namespace (0.10.0) + redis (< 3.0.0) + resque (1.15.0) + json (~> 1.4.6) + redis-namespace (>= 0.10.0) + sinatra (>= 0.9.2) + vegas (~> 0.1.2) rgeo (0.2.7) rgeo-geojson (0.2.0) rgeo (>= 0.2.0) @@ -196,15 +204,21 @@ GEM rubyzip sequel (3.22.0) sequel_column_type_array (0.0.2) + sinatra (1.2.3) + rack (~> 1.1) + tilt (>= 1.2.2, < 2.0) spreadsheet (0.6.5.3) ruby-ole (>= 1.0) steak (1.1.0) rspec (>= 1.3) thor (0.14.6) + tilt (1.2.2) timecop (0.3.5) treetop (1.4.9) polyglot (>= 0.3.1) tzinfo (0.3.26) + vegas (0.1.8) + rack (>= 1.0.0) warden (1.0.3) rack (>= 1.0.0) webrat (0.7.3) @@ -240,6 +254,7 @@ DEPENDENCIES rails_warden rdoc redis + resque rgeo rgeo-geojson roo diff --git a/Rakefile b/Rakefile index 953769d579..589c3df19b 100644 --- a/Rakefile +++ b/Rakefile @@ -3,6 +3,7 @@ require File.expand_path('../config/application', __FILE__) require 'rake' +require 'resque/tasks' CartoDB::Application.load_tasks diff --git a/app/controllers/invitations_controller.rb b/app/controllers/invitations_controller.rb index 9d578692b8..b12d3eae8d 100644 --- a/app/controllers/invitations_controller.rb +++ b/app/controllers/invitations_controller.rb @@ -8,7 +8,7 @@ class InvitationsController < ApplicationController def create @user = User.new_from_email params[:email] if @user.save - UserMailer.ask_for_invitation(@user).deliver + Resque.enqueue(Resque::Mailer::User::AskForInvitation, @user) redirect_to thanks_path and return else render :template => 'home/index' diff --git a/app/controllers/superadmin/users_controller.rb b/app/controllers/superadmin/users_controller.rb index e41591d278..65a7d37d07 100644 --- a/app/controllers/superadmin/users_controller.rb +++ b/app/controllers/superadmin/users_controller.rb @@ -48,7 +48,7 @@ class Superadmin::UsersController < Superadmin::SuperadminController @user.enable attributes[:enabled] if @user.save @user.setup_user - UserMailer.invitation_sent(@user, request.protocol, request.host_with_port).deliver if @user.was_disabled? && @user.enabled? + Resque.enqueue(Resque::Mailer::User::InvitationSent, @user, request.protocol, request.host_with_port) if @user.was_disabled? && @user.enabled? redirect_to superadmin_users_path, :flash => {:success => 'User updated successfully'} else render edit_superadmin_user_path(@user) diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 4d71e003b6..39e5268adc 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -7,6 +7,8 @@ class UserMailer < ActionMailer::Base # en.user_mailer.ask_for_invitation.subject # def ask_for_invitation(user) + user = OpenStruct.new(user['values']) + mail :to => user.email end @@ -15,7 +17,9 @@ class UserMailer < ActionMailer::Base # en.user_mailer.invitation_sent.subject # def invitation_sent(user, protocol, host) - @setup_user_link = "#{protocol}#{host}#{edit_invitation_path(user, :invite_token => user.invite_token)}" + user = OpenStruct.new(user['values']) + + @setup_user_link = "#{protocol}#{host}#{edit_invitation_path(user.id, :invite_token => user.invite_token)}" mail :to => user.email end end diff --git a/config/initializers/load_resque.rb b/config/initializers/load_resque.rb new file mode 100644 index 0000000000..563be884ca --- /dev/null +++ b/config/initializers/load_resque.rb @@ -0,0 +1,6 @@ +require 'resque' +require 'resque/user_mailer_jobs' + +redis_config = APP_CONFIG[:redis] + +Resque.redis = "#{redis_config['host']}:#{redis_config['port']}" \ No newline at end of file diff --git a/lib/resque/user_mailer_jobs.rb b/lib/resque/user_mailer_jobs.rb new file mode 100644 index 0000000000..15e3fbf75b --- /dev/null +++ b/lib/resque/user_mailer_jobs.rb @@ -0,0 +1,22 @@ +module Resque + module Mailer + module User + + module AskForInvitation + @queue = :mailer + + def self.perform(user) + UserMailer.ask_for_invitation(user).deliver + end + end + + module InvitationSent + @queue = :mailer + + def self.perform(user, protocol, host) + UserMailer.invitation_sent(user, protocol, host).deliver + end + end + end + end +end \ No newline at end of file diff --git a/script/resque b/script/resque new file mode 100755 index 0000000000..6010f99daa --- /dev/null +++ b/script/resque @@ -0,0 +1,2 @@ +#!/bin/sh +VVERBOSE=true QUEUE=* rake environment resque:work \ No newline at end of file