mails are now sent in the background
This commit is contained in:
@@ -98,13 +98,14 @@ class UsersController < ApplicationController
|
||||
is_idiot = false
|
||||
end
|
||||
begin
|
||||
# these shouldn't be send in the background
|
||||
RedstonerMailer.register_mail(@user, is_idiot).deliver
|
||||
RedstonerMailer.register_info_mail(@user, is_idiot).deliver
|
||||
rescue => e
|
||||
puts "---"
|
||||
puts "WARNING: registration mail failed for user #{@user.name}, #{@user.email}"
|
||||
puts e.message
|
||||
puts "---"
|
||||
Rails.logger.error "---"
|
||||
Rails.logger.error "WARNING: registration mail failed for user #{@user.name}, #{@user.email}"
|
||||
Rails.logger.error e.message
|
||||
Rails.logger.error "---"
|
||||
flash[:alert] = "Registration mail failed. Please contact us in-game."
|
||||
end
|
||||
flash[:notice] = "Successfully signed up! Check your email!"
|
||||
|
||||
22
app/helpers/mailer_helper.rb
Normal file
22
app/helpers/mailer_helper.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
module MailerHelper
|
||||
def background_mailer(mails)
|
||||
Thread.new do
|
||||
begin
|
||||
mails.each do |mail|
|
||||
begin
|
||||
mail.deliver
|
||||
rescue => e
|
||||
Rails.logger.error "---"
|
||||
Rails.logger.error "WARNING: '#{mail.try(:subject)}' failed for user #{@user.name}, #{@user.email}"
|
||||
Rails.logger.error e.message
|
||||
Rails.logger.error "---"
|
||||
end
|
||||
end
|
||||
ensure
|
||||
# threads open their own DB connection
|
||||
ActiveRecord::Base.connection.close
|
||||
Rails.logger.flush
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,7 @@
|
||||
class Threadreply < ActiveRecord::Base
|
||||
|
||||
include MailerHelper
|
||||
|
||||
belongs_to :forumthread
|
||||
belongs_to :user_author, class_name: "User", foreign_key: "user_author_id"
|
||||
belongs_to :user_editor, class_name: "User", foreign_key: "user_editor_id"
|
||||
@@ -34,23 +37,25 @@ class Threadreply < ActiveRecord::Base
|
||||
|
||||
# thread + replies
|
||||
(thread.replies.to_a << thread).each do |post|
|
||||
# don't send mail to the user who wrote this
|
||||
if post.author != author # && user.send_threadreply_mail (TODO)
|
||||
# don't send mail to the user who wrote this, don't send to banned/disabled users
|
||||
if post.author != author && post.author.normal? # && user.send_threadreply_mail (TODO)
|
||||
userids << post.author.id
|
||||
end
|
||||
end
|
||||
# making sure we don't send multiple mails to the same user
|
||||
userids.uniq!
|
||||
|
||||
mails = []
|
||||
userids.each do |uid|
|
||||
begin
|
||||
RedstonerMailer.thread_reply_mail(User.find(uid), self).deliver
|
||||
mails << RedstonerMailer.thread_reply_mail(User.find(uid), self)
|
||||
rescue => e
|
||||
puts "---"
|
||||
puts "WARNING: registration mail failed for user #{@user.name}, #{@user.email}"
|
||||
puts e.message
|
||||
puts "---"
|
||||
Rails.logger.error "---"
|
||||
Rails.logger.error "WARNING: Failed to create thread_reply mail (view) for reply#: #{@self.id}, user: #{@user.name}, #{@user.email}"
|
||||
Rails.logger.error e.message
|
||||
Rails.logger.error "---"
|
||||
end
|
||||
end
|
||||
background_mailer(mails)
|
||||
end
|
||||
end
|
||||
@@ -92,10 +92,10 @@ class User < ActiveRecord::Base
|
||||
return http.post(uri.request_uri, payload.to_json, "Content-Type" => "application/json").code == "200"
|
||||
end
|
||||
rescue => e
|
||||
puts "---"
|
||||
puts "ERROR: failed to check mc password for '#{self.uuid}'. Login servers down?"
|
||||
puts e.message
|
||||
puts "---"
|
||||
Rails.logger.error "---"
|
||||
Rails.logger.error "ERROR: failed to check mc password for '#{self.uuid}'. Login servers down?"
|
||||
Rails.logger.error e.message
|
||||
Rails.logger.error "---"
|
||||
return false
|
||||
end
|
||||
end
|
||||
@@ -111,16 +111,16 @@ class User < ActiveRecord::Base
|
||||
# # user doesn't exist
|
||||
# return false
|
||||
# else
|
||||
# puts "---"
|
||||
# puts "ERROR: unexpected response code while checking '#{self.uuid}' for premium account"
|
||||
# puts "code: #{reponse.status}, body: '#{reponse.read}'"
|
||||
# puts "---"
|
||||
# Rails.logger.error "---"
|
||||
# Rails.logger.error "ERROR: unexpected response code while checking '#{self.uuid}' for premium account"
|
||||
# Rails.logger.error "code: #{reponse.status}, body: '#{reponse.read}'"
|
||||
# Rails.logger.error "---"
|
||||
# end
|
||||
# rescue => e
|
||||
# puts "---"
|
||||
# puts "ERROR: failed to check for premium account for '#{self.uuid}'. Minecraft servers down?"
|
||||
# puts e.message
|
||||
# puts "---"
|
||||
# Rails.logger.error "---"
|
||||
# Rails.logger.error "ERROR: failed to check for premium account for '#{self.uuid}'. Minecraft servers down?"
|
||||
# Rails.logger.error e.message
|
||||
# Rails.logger.error "---"
|
||||
# end
|
||||
# # mojang servers have trouble
|
||||
# return true
|
||||
@@ -132,9 +132,9 @@ class User < ActiveRecord::Base
|
||||
# skin = http.get("/MinecraftSkins/#{CGI.escape(ign)}.png")
|
||||
# http.finish
|
||||
# rescue
|
||||
# puts "---"
|
||||
# puts "ERROR: failed to get skin status code for '#{ign}'. Skin servers down?"
|
||||
# puts "---"
|
||||
# Rails.logger.error "---"
|
||||
# Rails.logger.error "ERROR: failed to get skin status code for '#{ign}'. Skin servers down?"
|
||||
# Rails.logger.error "---"
|
||||
# end
|
||||
# skin.code != "404"
|
||||
# end
|
||||
@@ -159,10 +159,10 @@ class User < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
rescue => e
|
||||
puts "----"
|
||||
puts "Failed to get mojang profile for #{self.ign}"
|
||||
puts e.message
|
||||
puts "----"
|
||||
Rails.logger.error "----"
|
||||
Rails.logger.error "Failed to get mojang profile for #{self.ign}"
|
||||
Rails.logger.error e.message
|
||||
Rails.logger.error "----"
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user