Track email digests
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
class AddFailedEmailDigestsCountToUsers < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :users, :failed_email_digests_count, :integer, default: 0
|
||||
end
|
||||
end
|
||||
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20161229110336) do
|
||||
ActiveRecord::Schema.define(version: 20170105215410) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@@ -123,10 +123,10 @@ ActiveRecord::Schema.define(version: 20161229110336) do
|
||||
t.string "visit_id"
|
||||
t.datetime "hidden_at"
|
||||
t.integer "flags_count", default: 0
|
||||
t.datetime "ignored_flag_at"
|
||||
t.integer "cached_votes_total", default: 0
|
||||
t.integer "cached_votes_up", default: 0
|
||||
t.integer "cached_votes_down", default: 0
|
||||
t.datetime "ignored_flag_at"
|
||||
t.integer "comments_count", default: 0
|
||||
t.datetime "confirmed_hide_at"
|
||||
t.integer "cached_anonymous_votes_total", default: 0
|
||||
@@ -145,6 +145,7 @@ ActiveRecord::Schema.define(version: 20161229110336) do
|
||||
add_index "debates", ["cached_votes_total"], name: "index_debates_on_cached_votes_total", using: :btree
|
||||
add_index "debates", ["cached_votes_up"], name: "index_debates_on_cached_votes_up", using: :btree
|
||||
add_index "debates", ["confidence_score"], name: "index_debates_on_confidence_score", using: :btree
|
||||
add_index "debates", ["description"], name: "index_debates_on_description", using: :btree
|
||||
add_index "debates", ["geozone_id"], name: "index_debates_on_geozone_id", using: :btree
|
||||
add_index "debates", ["hidden_at"], name: "index_debates_on_hidden_at", using: :btree
|
||||
add_index "debates", ["hot_score"], name: "index_debates_on_hot_score", using: :btree
|
||||
@@ -308,6 +309,7 @@ ActiveRecord::Schema.define(version: 20161229110336) do
|
||||
add_index "proposals", ["author_id"], name: "index_proposals_on_author_id", using: :btree
|
||||
add_index "proposals", ["cached_votes_up"], name: "index_proposals_on_cached_votes_up", using: :btree
|
||||
add_index "proposals", ["confidence_score"], name: "index_proposals_on_confidence_score", using: :btree
|
||||
add_index "proposals", ["description"], name: "index_proposals_on_description", using: :btree
|
||||
add_index "proposals", ["geozone_id"], name: "index_proposals_on_geozone_id", using: :btree
|
||||
add_index "proposals", ["hidden_at"], name: "index_proposals_on_hidden_at", using: :btree
|
||||
add_index "proposals", ["hot_score"], name: "index_proposals_on_hot_score", using: :btree
|
||||
@@ -480,8 +482,9 @@ ActiveRecord::Schema.define(version: 20161229110336) do
|
||||
t.boolean "email_digest", default: true
|
||||
t.boolean "email_on_direct_message", default: true
|
||||
t.boolean "official_position_badge", default: false
|
||||
t.datetime "password_changed_at", default: '2016-12-21 17:55:08', null: false
|
||||
t.datetime "password_changed_at", default: '2016-11-02 13:51:14', null: false
|
||||
t.boolean "created_from_signature", default: false
|
||||
t.integer "failed_email_digests_count", default: 0
|
||||
end
|
||||
|
||||
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
|
||||
|
||||
@@ -22,6 +22,7 @@ class EmailDigest
|
||||
|
||||
def mark_as_emailed
|
||||
notifications.update_all(emailed_at: Time.current)
|
||||
user.update(failed_email_digests_count: 0)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -4,8 +4,13 @@ namespace :emails do
|
||||
task digest: :environment do
|
||||
User.email_digest.find_each do |user|
|
||||
email_digest = EmailDigest.new(user)
|
||||
email_digest.deliver
|
||||
email_digest.mark_as_emailed
|
||||
begin
|
||||
email_digest.deliver
|
||||
email_digest.mark_as_emailed
|
||||
rescue
|
||||
user.increment_counter(:failed_email_digests_count)
|
||||
user.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -122,6 +122,19 @@ describe EmailDigest do
|
||||
expect(notification3.emailed_at).to_not be
|
||||
end
|
||||
|
||||
it "resets the failed_email_digests_count flag" do
|
||||
user1 = create(:user, failed_email_digests_count: 0)
|
||||
user2 = create(:user, failed_email_digests_count: 3)
|
||||
|
||||
email_digest_1 = EmailDigest.new(user1)
|
||||
email_digest_2 = EmailDigest.new(user2)
|
||||
email_digest_1.mark_as_emailed
|
||||
email_digest_2.mark_as_emailed
|
||||
|
||||
expect(user1.failed_email_digests_count).to eq(0)
|
||||
expect(user2.failed_email_digests_count).to eq(0)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user