• Added:
- StatusSimilarityService to check against spamming same statuses over and over
- StatusSimilarityService check to PostStatusService and EditStatusService
• Added:
- account_flags_block partial to admin pages (groups, accounts, reports) so admin/moderators can easily see pro, verified, investor, donor, spam flags of an account
• Added:
- (temporary) fix for spam bots statuses to be hidden from timelines, comments
• Todo:
- Implement a new "spam" structure to allow for accounts to be safe from being (re) marked as spam.
• Removed:
- ImageProxyController API route
- removed from news reducer for trends.
• Todo:
- Devise solution for integrating cross site images from trends -> social
(When using dummy data)
* to_s(16) allocates a string per character
Instead of converting the ord to hex and determining if the hex
is over 2 characters long, just see if the ord is over 255.
* .match allocates a MatchData instance and sets all sorts of backrefs
($1, $2, etc). match? just returns a boolean.
casecmp?(str) is 1.5x faster than casecmp(str).zero?
It's 1 less method call in Ruby, and the C code can convert
to boolean, rather than returning a number and determining
if it's zero.
• Added:
- CharacterCounter to ComposeDestinationHeader
- Styles for stroke colors for CharacterCounter
• Updated:
- CharacterCounter styles, heights to fit in header
If you aren't signed in, you don't have an auth token.
When you don't have an auth token, React was sending the headers
"Authorization: Bearer null"
This caused 5 Doorkeeper token lookups using
WHERE "oauth_access_tokens"."token" = 'null'
on the Explore page (the root of the app when not signed in).
Rails won't even attempt to write to a replica. Without this option,
a write attempt would actually run against Postgres, and it would
be up to Postgres to throw a readonly error.
Additionally, marking it as a replica teaches ActiveRecord that it
should not attempt to run migrations against this connection.
https://api.rubyonrails.org/classes/ActiveRecord/DatabaseConfigurations.html#method-i-configs_for
I'm actually pretty sure that the lack of `replica: true`
is why there's currently a db/slave1_schema.rb and db/slave2_schema.rb
Anything in the &default section can be merged in using <<: *default
In this case, the default already specifies that the adapter is
postgresql, the timeout is 5000, the encoding is unicode. It also
already specified the db pool, but the default actually checked 2
different ENVs and provided a fallback if it's not provided.
Lastly, I was able to move the prepared_statements section to the
defaults, because the .env.vagrant file doesn't specify
ENV['PREPARED_STATEMENTS'], development still just sets it to
'false'.