Skip to content

Instantly share code, notes, and snippets.

View ritikesh's full-sized avatar

Ritikesh ritikesh

View GitHub Profile
# Before
class User < ActiveRecord::Base
validates_uniqueness_of :username, message: :taken
end
# After
class User < ActiveRecord::Base
handle_record_not_unique(field: ["username"], message: {username: :taken})
end
@ritikesh
ritikesh / actionmailer1.rb
Last active August 25, 2020 09:01
blog gists
class MailboxInterceptor
def self.delivering_email(mail)
set_smtp_settings(mail)
fix_encodings
ensure
unset_email_config
end
private
def self.set_smtp_settings(mail)
@ritikesh
ritikesh / actionmailer2.rb
Created August 25, 2020 08:58
blog gists
module MailObserver
def self.delivered_email(mail)
logger = ActionMailer::Base.logger
logger.tagged(mail.message_id) do
logger.info do
recipients = Array(mail.to).join(', ')
"Sent mail to #{recipients}"
end
end
logger.debug { mail.encoded }
@ritikesh
ritikesh / actionmailer3.rb
Created August 25, 2020 08:58
blog gists
class MailboxInterceptor
def self.delivering_email(mail)
set_smtp_settings(mail)
fix_encodings
mail.perform_deliveries = Rails.env.production? || File.exists?("#{Rails.root}/tmp/send_emails.txt")
ensure
unset_email_config
end
end
ActionMailer::Base.register_interceptor(MailboxInterceptor)
@ritikesh
ritikesh / actionmailer4.rb
Created August 25, 2020 08:59
blog gists
class ApplicationMailer < ActionMailer::Base
before_action :block_spam_accounts, if: -> { Tenant.current.spam? }
private
def block_spam_accounts
message.perform_deliveries = false
end
end
@ritikesh
ritikesh / actionmailer5.rb
Created August 25, 2020 09:00
blog gists
class ApplicationMailer < ActionMailer::Base
before_action :block_spam_accounts, if: -> { Tenant.current.spam? }
private
def block_spam_accounts
self.response_body= "Abort!"
end
end